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

时间:2012-01-07 21:11:14

标签: c++ string char

我使用允许我将任何类型(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 

我无法找到它的解释以及我做错了什么。

2 个答案:

答案 0 :(得分:3)

operator>>

std::string只会在遇到第一个空白字符之前读取。如果要提取std::stringstream中的所有信息,请使用str()成员函数:

s = ss.str();

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

的说明

答案 1 :(得分:2)

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