Справка по C ++ - getline

Я занимаюсь C ++ уже две недели, я создаю очень простую программу, которая позволяет пользователю вводить свое имя, а затем выводит полное имя, вот код;

#include <iostream>
#include <string>

using namespace std;

int main ()
{
    string first ;
    string middle ;
    string last;

    cout << "What is your firstname?" << endl;
    getline(cin, first);
    cout << "Your firstname is ";
    first = first;
    cout << first << endl;
    cout << endl;

    cout << "What is your middle name?" << endl;
    getline(cin, middle);
    cout << "Your middle name is ";
    middle = middle;
    cout << middle << endl;
    cout << endl;

    cout << "What is your lastname?" << endl;
    getline(cin, last);
    cout << "Your lastname is ";
    last = last;
    cout << last << endl;
    cout << endl;

    cout << "Your full name is " <<  first + middle + last << endl;

    system ("pause");
    return 0;
}

У меня проблема в том, что он не выводит пробелы в последнем cout

cout << "Your full name is " <<  first + middle + last << endl;

Любая помощь будет оценена по достоинству! Спасибо.


person John Brown    schedule 25.10.2012    source источник
comment
Ну, вы не говорите, что нужно печатать пробелы, зачем это нужно?   -  person Mat    schedule 25.10.2012
comment
Это то, что вы хотите сделать: cout << "Your full name is " << first << " " << middle << " " << last << endl;   -  person Zane    schedule 25.10.2012
comment
Вам уже удается печатать предложения; подумай об этом. Пробел " ".   -  person Mat    schedule 25.10.2012
comment
@Zane Я действительно пробовал это, и это сработало. Проблема в том, что это выглядело неопрятно, есть ли способ лучше? Или это единственный способ.   -  person John Brown    schedule 25.10.2012
comment
Вы, конечно, можете использовать какой-то «соединитель», который соединяется с указанным персонажем. См. этот вопрос для получения информации о способе ускорения.   -  person David Schwartz    schedule 25.10.2012


Ответы (2)


измените строку вывода на

cout << "Your full name is " <<  first << " " << middle << " " << last << endl;
person tomahh    schedule 25.10.2012
comment
Разве это не именно то, что предложил Зейн, но ОП сказал, что это выглядит неопрятно? Я смущен. - person Component 10; 25.10.2012
comment
(Чтобы уточнить, +1, поскольку это подходящий ответ, учитывая 2 недели опыта работы с C ++.) - person Component 10; 25.10.2012

Это потому, что вы не говорите ему писать пробелы там, где, я думаю, они вам нужны.

Я предполагаю, что у вас есть места в

"Your full name is "

Тогда вам нужны пробелы между строками first, middle и last? Но вы никогда не добавляете туда пробелов.

Часть, которая выглядит как

<<  first + middle + last <<

необходимо изменить, чтобы включить пробелы

<<  first + " " + middle + " " + last <<

Таким образом, весь ваш cout в конце должен быть

cout << "Your full name is " <<  first + " " + middle + " " + last << endl;
person inquam    schedule 25.10.2012