gpt4 book ai didi

c++ - istringstream 不改变 C++

转载 作者:行者123 更新时间:2023-11-30 02:52:58 24 4
gpt4 key购买 nike

我已经编写了一些代码来说明我在另一个程序中遇到的转换某些输入字符串的问题。

#include <iostream>
#include <sstream>
#include <bitset>

using namespace std;

int main()
{
string tempStr;
unsigned long tempVal;
istringstream tempIss;
bitset<32> tempBitset;

// Input the first word in hex and convert to a bitset

cout << "enter first word in hex : ";
cin >> tempStr;
tempIss.str(tempStr);
cout << "word2 tempIss : " << tempIss.str() << endl;
tempIss >> hex >> tempVal;
cout << "word2 tempVal : " << (int)tempVal << endl;
tempBitset = tempVal;
cout << "word1 tempBitset: " << tempBitset.to_string() << endl;

// Input the second word in hex and convert to a bitset

cout << "enter second word in hex : ";
cin >> tempStr;
tempIss.str(tempStr);
cout << "word2 tempIss : " << tempIss.str() << endl;
tempIss >> hex >> tempVal;
cout << "word2 tempVal : " << (int)tempVal << endl;
tempBitset = tempVal;
cout << "word2 tempBitset: " << tempBitset.to_string() << endl;

return 0;
}

我的问题是,虽然 tempIss 的值似乎随 tempIss.str(tempStr); 函数而改变,但以下 tempIss >> hex >> tempVal;似乎使用了 tempIss 的旧值!?

谢谢。

最佳答案

tempIss.str(tempStr);

这仅仅设置了内部缓冲区的内容。但是,它不会重置可能在先前操作的流上设置的错误标志。

在第二次提取之前说 tempIss.clear(); 应该可以完成这项工作。

关于c++ - istringstream 不改变 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405409/

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