如何在不通过 >> 分配给 tmp 变量的情况下从 std::istringstream 中读取单词?

How to read a word from std::istringstream without assigning to a tmp variable through >>?

我有一个 std::string line,其中包含从文件中读取的一行文本。然后我创建一个 istringstream:

std::istringstream str(line);

阅读这一行。为了获得第一个词,我这样做:

std::string word;
str >> word;

有没有办法不用声明中间变量word直接从str获取单词?

例如,我想做这样的事情:

if (str.get_next_word_directly() == "yes")
     do_something();

您必须使用命名变量来执行此操作;可以提取到一个临时文件中,但是您无法识别该临时文件以对其调用 operator==

一个选择是将提取包装在一个函数中,例如

std::string get_word(std::istream& is)
{
    std::string word;
    is >> word;
    return word;
}

然后你可以写

if( get_word(str) == "yes" )

注意。有一个针对 C++17 的提案允许 str.get_word() 而不是 get_word(str);但现在你只能使用 get_word(str).