将字符串转换为char,空格字符未正确转换

convert string to char , space character was not converted correctly

本文关键字:转换 字符 空格 字符串 char      更新时间:2023-10-16

我使用的代码可以将任何类型(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::stringoperator>>将只读取到遇到第一个空白字符为止。如果要提取std::stringstream中的所有信息,请使用str()成员函数:

s = ss.str();

有关参考,请参阅operator>>(istream& s, string& str)stringstream::str() 的说明

>>运算符不会返回空格,请使用ss.str();获取字符串流值。