о приведенном ниже коде строка больше не загорается, и когда я ввел «Джон Смит», появляется только «Джон», строка работала у меня нормально несколько недель назад, пока я не попытался вызвать функцию строк сегодня, которая не сработала, поэтому я протестировал для более простого.
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string name;
// Get the user's name
cout << "Please enter your first name: ";
cin >> name;
// Print the greeting
cout << "Hello, " << name << "." << endl;
return 0;
}
Я могу спрашивать не в том месте, но я не могу сказать, в чем проблема, пожалуйста, помогите :(
"используя пространство имен std;" - плохая привычка. Не делай этого.
Ох, спасибо, я новенький, рад, что это только моя проблема: 'D
Возможный дубликат Чтение всей строки ввода





std :: cin получает только символы до первого «белого» символа, например пробел, табуляцию или ввод.
Если вы хотите прочитать всю строку, используйте, например, getline ()
string line;
cin.clear(); //to make sure we have no pending characters in input buffer
getline(cin, line);
Хотя это правда, вопрос не в этом. Вопрос в том, почему IDE не отображает string так же, как int.
С std::string, использование std::cin >> someString будет читать только первое слово из буфера (остановится на первом встреченном пробеле).
Вместо этого используйте getline(std::cin, someString), чтобы прочитать всю строку.
Большое спасибо за помощь: 'D
Чтобы получить всю строку, используйте getline(cin, name);
вместо cin >> name;
См. http://www.cplusplus.com/reference/string/string/getline/
Могу я предложить en.cppreference.com/w/cpp/string/basic_string/getline в качестве ссылки на лучше? Cplusplus.com (ИМХО) очень справочный сайт плохой, и вам не стоит его использовать. Cppreference.com имеет более высокое качество много.
intпримитивен, аstringнет, он исходит отinclude<>