Почему печатается только первая буква имени?

#c #visual-c #cin

#c #visual-c #cin

Вопрос:

 #include<iostream>
using namespace std;

int main()
{

    int age;
    char name;
    cout<<"Enter age and name: ";
    cin >> age >> name;
    cout <<endl <<"your age: "<< age << endl << "name is: "<< name;


    return 0;
}
 

Как выглядит прогон:

изображение

Комментарии:

1. Сколько букв вы ожидаете сохранить в одной char переменной?

2. Переменная char name может содержать только одну букву. Вам нужен массив символов для хранения целого слова.

3. char name -> std::string name и вперед. Также я бы проанализировал отдельно, если у кого-то есть имя, начинающееся с числа, допустимого в некоторых юрисдикциях.

Ответ №1:

Используйте строку вместо символа. Символ получает только первую букву ввода. Код должен выглядеть следующим образом.

 #include<iostream>

using namespace std;

int main() {
    int age = 0;
    string name = "";
    
    cout<<"Enter your age and name: ";
    
    cin >> age >> name;
    
    cout << endl;
    
    cout << "Your age is " << age << endl;
    cout << "Your name is " << name << endl;
    
    return 0;
}
 

Если вам требуется использовать символ, вы можете попробовать использовать вектор.

 #include <iostream>
#include <vector>

using namespace std;

vector<char> _myStr;

void DisplayList () {
    cout << "Your name is: ";

    for (int i = 0; i < _myStr.size(); i  ) {
        cout << _myStr[i];
    }

    cout << endl;
}

void ConvertToVector (string theStr) {
    for (int i = 0; i < theStr.length(); i  ) {
        _myStr.push_back(theStr[i]);
    }
}

int main () {
    int age = 0;
    string name = "";

    cout << "Enter your age and name: ";
    cin >> age >> name;

    cout << endl;

    ConvertToVector (name);   

    cout << "Your age is: " << age;
    DisplayList ();

    return 0;
}
 

Ответ №2:

Используйте string вместо char …

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

int main()
{

    int age;
    string name;
    cout<<"Enter age and name: ";
    cin >> age >> name;
    cout <<endl <<"your age: "<< age << endl << "name is: "<< name;


    return 0;
}