C++ 如何从std::istringstream读取单词而不通过>>分配给tmp变量?

C++ 如何从std::istringstream读取单词而不通过>>分配给tmp变量?,c++,istringstream,C++,Istringstream,我有一个std::string行,其中包含一行从文件读取的文本。然后我创建一个istringstream: 读这行。为了得到第一个单词,我这样做: std::string word; str >> word; 有没有一种方法可以直接从str获取单词,而不声明中间变量单词 例如,我想做如下事情: if (str.get_next_word_directly() == "yes") do_something(); 您必须使用命名变量来完成此操作;可以提取到一个临时变量中,但

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

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

std::string word;
str >> word;
有没有一种方法可以直接从str获取单词,而不声明中间变量单词

例如,我想做如下事情:

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

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

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

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_wordstr;但是现在你只能使用get_wordstr.

你说的直接获取是什么意思?这个值应该到哪里去?中间值是多少?@πάνταῥεῖ 添加了一个示例。我最近听说,统一调用语法不能用于C++17。
if( get_word(str) == "yes" )