C++ 如何从std::istringstream读取单词而不通过>>分配给tmp变量?
我有一个std::string行,其中包含一行从文件读取的文本。然后我创建一个istringstream: 读这行。为了得到第一个单词,我这样做: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 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" )