如何将读取位置设置为 std::istringstream 中的第一个字符串?
how to set read position to 1st string in std::istringstream?
在下面的 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;
您正在使用所有流,并且在 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;
}
您必须清除字符串并将流位置设置为开头:
range.clear();
range.seekg(0,ios_base::beg);
在下面的 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;
您正在使用所有流,并且在 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;
}
您必须清除字符串并将流位置设置为开头:
range.clear();
range.seekg(0,ios_base::beg);