を使って一語ずつistringstream
読んでいます。string
ただし、条件が失敗した場合istringstream
、前の単語が読み取られる前に元に戻すことができる必要があります。サンプル コードは動作しますが、これを実現するためにストリームを使用するより直接的な方法があるかどうかを知りたいです。
std::string str("my string");
std::istringstream iss(str);
std::ostringstream ossBackup << iss.rdbuf(); // Writes contents of buffer and in the process changes the buffer
std::string strBackup(ossBackup.str()); // Buffer has been saved as string
iss.str(strBackup); // Use string to restore iss's buffer
iss.clear(); // Clear error states
iss >> word; // Now that I have a backup read the 1st word ("my" was read)
// Revert the `istringstream` to before the previous word was read.
iss.str(strBackup); // Restore iss to before last word was read
iss.clear(); // Clear error states
iss >> word; // "my" was read again