我使用允许将任何类型(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
我找不到解释和我做错了什么。
难道是提取操作符忽略空格? – 2012-01-07 21:13:16
嗯,好问题。比如何将任何类型转换为字符串和字符串为任何类型?你有什么建议吗? – 2012-01-07 21:15:03
你是否确定这是你的真实代码?你应该得到一个“索引超出范围”的错误,因为你从'bs2.size()'开始,这是超出界限的,而不是'bs2.size() - 1' – 2012-01-07 21:18:02