преобразовать строку в символ, символ пробела не был преобразован правильно - PullRequest
1 голос
/ 08 января 2012

Я использую код, который позволяет мне преобразовывать любой тип (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 ]

3 голосов
/ 08 января 2012

operator>> для std::string будет считываться только до появления первого символа пробела. Если вы хотите извлечь всю информацию в std::stringstream, используйте функцию-член str():

s = ss.str();

Для справки см. Описание operator>>(istream& s, string& str) и stringstream::str()

2 голосов
/ 08 января 2012

Оператор >> не возвращает пробел, используйте ss.str();, чтобы получить значение stringstream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...