2014-12-08 6 views
-2

Я хочу ввести имя в массиве, а затем желаю распечатать его на экране. Код приведен нижемассив не хранить/печатать вторую часть имени

char name[20];   
cout << "Please enter name: "; 
cin >> name;   
cout << name << endl; 

Затем после компиляции я вошел имя

Ali Waqas 

После этого Ali печатается на экране, но Waqas не делает. я заменить мое COUT заявление с этой петлей

for(int i=0; i<20; i++){ 
    cout << name[i]; 
} 

Опять Ali печатаются, но после этого мусора печатаю довольно Waqas

+1

[ 'getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline) – Borgleader

+2

Итак, с 'cin' и' cout', очевидно кодом C++. Вы знаете C! = C++, не так ли? Вы также должны использовать 'std :: string' вместо строк C. – crashmstr

+0

@crashmstr, а как насчет моего вопроса? –

ответ

0

Вы должны использовать

getline() 

, чтобы получить желаемые результаты. Вы не получите правильный вывод с текущим кодом, потому что оператор < < игнорирует пробелы. Вы должны использовать этот тип кода

string str; 
getline(cin, str); 

Для дальнейшего получения дополнительной информации вы должны пройти через этот link

2

Это потому, что оператор < < пропускает белое пространство. Вы можете использовать getline(), чтобы получить желаемый эффект.

string str; 
getline(cin, str); 
+0

спасибо за предложение, но пока я хочу сделать это с помощью массива символов, а скорее из строкового. –

+0

Вы можете поместить массив символов вместо строки ... – ravi

+1

@muhammadkhan Почему? Почему вы использовали громоздкий и небезопасный массив вместо стандартного типа 'std :: string'? – Angew

Смежные вопросы