在下面的c ++代码中,在使用getline()对其执行一些读操作后,我无法将读指针倒回到第一个字符串:
std::string token;
std::string first;
std:string str = "1,2,3,4,5";
std::istringstream range(str);
while(getline(range,token,','))
cout<<"token="<<token<<endl;
getling(range,first,',');
cout<<first;
答案 0 :(得分:2)
您正在使用所有流,并且在while
的末尾,流设置其eof
位。你需要clear
流然后回到第一个位置:
#include <iostream>
#include <string>
#include <sstream>
int main()
{
std::string token;
std::string first;
std::string str = "1,2,3,4,5";
std::istringstream range(str);
while (std::getline(range, token, ','))
std::cout << "token=" << token << std::endl;
// need these 2 lines
range.clear(); // clear the `failbit` and `eofbit`
range.seekg(0); // rewind
std::getline(range, first, ',');
std::cout << first;
}
答案 1 :(得分:1)
您必须清除字符串并将流位置设置为开头:
range.clear();
range.seekg(0,ios_base::beg);