我使用允许我将任何类型(int,double,float,char)转换为字符串的代码。我测试了该程序并选择char
作为类型值。
stringstream ss;
string s;
char c = '3';
ss << c;
ss >> s;
cout << "CHAR" << endl;
bitset<8> bs2( (char) c );
for( int i = (int) bs2.size(); i >= 0; i-- )
cout << bs2[i] << " ";
cout << endl;
bitset<8> bs1( (char) s.c_str()[0]);
cout << "STRING" << endl;
for( int i = (int) bs1.size(); i >= 0; i-- )
cout << bs1[i] << " ";
cout << endl;
输出
CHAR
0 0 0 0 0 0 0 1 1
STRING
0 0 0 0 0 0 0 1 1
但我发现了一件奇怪的事情。我设置char c = ' '
并且值未正确转换。
CHAR
0 0 0 1 0 0 0 0 0
STRING
0 0 0 0 0 0 0 0 0
我无法找到它的解释以及我做错了什么。
答案 0 :(得分:3)
operator>>
的 std::string
只会在遇到第一个空白字符之前读取。如果要提取std::stringstream
中的所有信息,请使用str()
成员函数:
s = ss.str();
有关参考,请参阅operator>>(istream& s, string& str)
和stringstream::str()
答案 1 :(得分:2)
>>
运算符不会返回空格,使用ss.str();
来获取字符串流值。