gpt4 book ai didi

C++ stringstream无效的字符串指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:51 25 4
gpt4 key购买 nike

我有一个 stringstream,在迭代中推送给它。将其内容转换为 int 对象后,它就再也不会改变了。我认为它发生了变化,但 instance.str() 指向一个无效的地方,该字符串不再存在。

bool h = 1;
stringstream ss;
for(int i = 0; i < input.length(); i++)
{
if(input[i] != ':')
{
cout << "input: " << input[i] << endl;
ss << input[i];
cout << "ss: " << ss.str() << endl;
}
else
if(h)
{
ss >> hour;
ss.str(string());
h = 0;
}
}

在此循环中,在满足条件(htrue)后,流的内容将转换为 int。直到这一刻一切正常,但在这一刻之后,ss.str() 返回一个空的 string

我对无效字符串指针的猜测正确吗?若有,原因为何?如果不是,这种行为的原因是什么?

更新:我更改了源代码,因为以前的版本是我通过这个技巧处理问题的方式:

stringstream a(ss.str());
a >> hour;
ss.str(string());

最佳答案

问题是这一行:

ss >> hour;

设置流的 eof 位,因为您到达了字符串的末尾。当 eof 位被设置时,流不再工作。所以你必须在设置空字符串后清除它:

ss.str(string())
ss.clear()

关于C++ stringstream无效的字符串指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23150368/

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