gpt4 book ai didi

c++ - 如何读取动态大小的stringstream?

转载 作者:可可西里 更新时间:2023-11-01 16:28:26 25 4
gpt4 key购买 nike

我想尝试使用 stringstream 进行作业,但我对它的工作原理有点困惑。我进行了快速搜索,但找不到任何可以回答我问题的内容。

假设我有一个动态大小的流,我怎么知道什么时候停止写入变量?

 string var = "2 ++ asdf 3 * c";
stringstream ss;

ss << var;

while(ss){
ss >> var;
cout << var << endl;
}

我的输出是:

2  
++
asdf
3
*
c
c

我不确定为什么最后会有额外的“c”,尤其是因为 _M_in_cur = 0x1001000d7 ""

最佳答案

你在最后得到了额外的 c,因为你在执行提取后没有测试流是否仍然良好:

while (ss)        // test if stream is good
{
ss >> var; // attempt extraction <-- the stream state is set here
cout << var; // use result of extraction
}

您需要测试执行提取和使用结果之间的流状态。通常这是通过在循环条件中执行提取来完成的:

while (ss >> var) // attempt extraction then test if stream is good
{
cout << var; // use result of extraction
}

关于c++ - 如何读取动态大小的stringstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3757074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com