c++字符串流无效的字符串指针
c++ stringstream invalidated string pointer
我有一个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;
}
}
在该循环中,在满足条件(h
为true
)之后,流的内容被转换为int
。直到这一刻,一切都很好,但在这一刻之后,ss.str()
返回一个空的string
。
我对无效字符串指针的猜测对吗?如果是,原因是什么?如果没有,这种行为的原因是什么?
更新:我更改了源代码,因为以前的版本是我通过以下技巧处理问题的方式:
stringstream a(ss.str());
a >> hour;
ss.str(string());
问题是这行:
ss >> hour;
设置流的eof位,因为您到达了字符串的末尾。当设置了eof位时,流就不再工作了。所以你必须在设置空字符串后清除它:
ss.str(string())
ss.clear()
相关文章:
- strcpy 在类中无法使用字符串指针
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 使用conststd::字符串指针作为函数参数
- 将字符串指针传递到C++和Xcode 11.1中不同线程上运行的函数
- OOP 和字符串指针的奇怪行为
- 在 C++ 中通过字符串指针复制字符串变量中的字符串
- 删除字符串指针在struct中的内存
- 字符串指针的排序向量
- C#C /CLR处理REF参数和字符串指针
- 问题在字符串指针中存储单词
- 如何在C++中从字符串指针中获取字符
- 如何使用字符串指针访问映射的键
- 将字符串指针与 NULL 以及 NULL 字符进行比较的目的
- 如何获取字符串指针的值?
- C++ 字符串* 指针未在控制台中正确打印
- Visual Studio C++ 空字符串指针
- 管理C#中返回的字符串指针
- 指向C++中的字符串指针数组的指针
- 如何将结果集设置为字符串指针
- 如何初始化字符串指针