如何在不通过 >> 分配给 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)
.
我有一个 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)
.