【发布时间】:2011-09-08 00:50:38
【问题描述】:
我正在使用一些 C++ 代码,并注意到以下形式的一些代码:
ss >> str;
其中 ss 是一个流(在本例中是一个字符串流),而 str 是一个字符串。
这段代码的定义行为是什么?具体来说,这个执行后str的值是多少?
【问题讨论】:
我正在使用一些 C++ 代码,并注意到以下形式的一些代码:
ss >> str;
其中 ss 是一个流(在本例中是一个字符串流),而 str 是一个字符串。
这段代码的定义行为是什么?具体来说,这个执行后str的值是多少?
【问题讨论】:
除非在ss.flags() 中设置了skipws 标志(默认情况下,但
你可以取消它),空白被跳过(而不是复制到str),
然后ss 从输入复制文本,直到空白或结尾
遇到文件(或者内存不足,或者读取
std::string::max_size 个字符)。
什么是空白是由 ctype<char> 语言环境决定的
ss.
【讨论】:
>> 运算符将读取到第一个空白字符(或流的末尾)并将它们分配给 str。
如果您的输入流包含“ab cde”。那么 str 将等于 "ab"。
【讨论】:
预期的行为是ss中存储的第一个单词将被消耗并存储在str中,其中word是根据之后获得的语言环境的最长非空格字符序列从ss 中删除任何前导空格字符。
【讨论】:
它将字节从 ss 放到 str。
【讨论】: