istream
有>>
运算符,但它跳过新行,就像跳过空格一样。如何才能将一行中的所有单词列表添加到一个向量(或任何其他方便使用的单词)中?
答案 0 :(得分:2)
一种可能性(虽然比我想要的更冗长)是:
std::string temp;
std::getline(your_istream, temp);
std::istringstream buffer(temp);
std::vector<std::string> words((std::istream_iterator<std::string>(buffer)),
std::istream_iterator<std::string>());
答案 1 :(得分:1)
我建议使用getline
将行缓冲到string
,然后使用stringstream
来解析string
的内容。例如:
string line;
getline(fileStream, line);
istringstream converter(line);
for (string token; converter >> token; )
vector.push_back(token);
警惕在C ++中使用C字符串读取函数。 std::string
I / O功能更加安全。
答案 2 :(得分:0)
你可以调用istream :: getline - 将读入一个字符数组
例如:
char buf[256];
cin.getline(buf, 256);
如果你想为行中的各个令牌使用与流兼容的访问器,请考虑使用istringstream