Почему в этой конкатенации строк C ++ отсутствует пробел? - PullRequest
1 голос
/ 31 мая 2010

Я работаю со строками с ++ и начинаю программировать.

Я ожидаю: 99 красных шаров

Но я получаю: 99 красных шаров

Почему это?

#include <string>
#include <iostream>
using namespace std;

int main()
{
    string text = "9";
    string term( "9 ");
    string info = "Toys";
    string color;
    char hue[4] = {'R','e','d','\0'};
    color = hue;
    info = "Balloons";
    text += (term + color + info);
    cout << endl << text << endl;
    return 0;
}

Ответы [ 3 ]

11 голосов
/ 31 мая 2010

Ваше определение hue не содержит пробелов. (\ 0 - это то, как C ++ знает, где находится конец строки, это не пробел.) Обратите внимание, что term в вашем коде имеет конечный пробел.

Чтобы исправить это, измените оттенок на:

char hue[5] = {'R','e','d',' ','\0'};

Или, при построении окончательного текста, добавьте пробел в дополнение:

text += (term + color + " " + info);
2 голосов
/ 31 мая 2010

Потому что нет места ни в конце строки, ни в начале информации. Так что вы можете попробовать:

 info = " Balloons";
2 голосов
/ 31 мая 2010

Это потому, что строки просто соединены символ за символом и в info = "Balloons" или в цвете нет пробела. Обратите внимание, что '\ 0' не является пробелом. Чтобы получить место, вам понадобится:

 text += (term + color + " " + info);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...