从istream到向量中获取一行单词的最简单方法?

时间:2011-02-04 03:28:22

标签: stl istream c++

istream>>运算符,但它跳过新行,就像跳过空格一样。如何才能将一行中的所有单词列表添加到一个向量(或任何其他方便使用的单词)中?

3 个答案:

答案 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