将字符串转换为char,空格字符未正确转换
convert string to char , space character was not converted correctly
我使用的代码可以将任何类型(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
我找不到解释,也找不到我做错了什么。
std::string
的operator>>
将只读取到遇到第一个空白字符为止。如果要提取std::stringstream
中的所有信息,请使用str()
成员函数:
s = ss.str();
有关参考,请参阅operator>>(istream& s, string& str)
和stringstream::str()
的说明
>>
运算符不会返回空格,请使用ss.str();
获取字符串流值。
相关文章:
- HEX值到wchar_t字符(UTF-8)的转换
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 转换特殊字符(UTF-8)
- 将转换字符键入 int 以用作向量C++的索引
- 将字符随机转换为大写的函数
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 转换字符时Arduino DUE 和 Arduino UNO 之间的区别
- 如何在C++中正确重载运算符转换字符*?
- 如何转换数据结构以在 c++ 中转换字符*
- 不兼容的转换字符
- 将转换字符数组[16]键入为int 128位
- 在c++中转换字符编码
- 使用递归转换字符
- 如何在Objective-C/C/C++中转换字符和字节的位置
- C++到Pep/8汇编语言的转换——字符数组
- 转换字符>十六进制