#c
#c
Вопрос:
Это мой код:
#include <iostream>
#include <istream>
#include <iomanip>
#include <cstring>
#include <string>
using namespace std;
int main()
{
string firstName[20];
string lastName[20];
string fullName[40];
string friendsName;
cout << "Enter your first name: ";
getline(cin, fullName);
return 0;
}
Он продолжает говорить мне, что я не включаю то, что мне нужно включить, чтобы иметь getline
.
Комментарии:
1.
fullName
это массив из 40string
сек, а не одинstring
.2. Пожалуйста, скопируйте и вставьте ваше точное сообщение об ошибке в текст вопроса.
3. Измените
string fullName[40];
, чтобыstring fullName;
сделать аналогично FirstName и LastName. Вам не нужен массив из 40 имен.4. std::string так не работает. Он выделит необходимый размер в зависимости от ввода из getline().
5. Для многих из нас номера ошибок практически бесполезны (мы используем разные компиляторы). Внизу, рядом с вкладкой списка ошибок, вы найдете вкладку Вывода. На вкладке «Вывод» вы найдете полный и чистый вывод сборки в виде обычного текста. Вы можете скопировать текст и вставить его в вопрос. Обратите внимание, что часто полный вывод сборки содержит дополнительные подсказки, необходимые для самостоятельного решения проблемы.
Ответ №1:
std::string
это контейнер символов переменной длины. Вам не нужно указывать его максимальный размер при его объявлении, и вы, конечно, не используете []
синтаксис для этого.
string firstName[20];
представляет собой массив из 20 строк C .
char firstName[20];
это массив из 20 символов, который можно рассматривать как единую строку в стиле C.
std::getline()
требуется std::string
заполнить один, а не массив std::string
s. Вместо этого все ваши string[]
массивы должны быть одиночными std::string
s, например:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string firstName;
string lastName;
string fullName;
cout << "Enter your first name: ";
getline(cin, firstName);
cout << "Enter your last name: ";
getline(cin, lastName);
fullName = firstName " " lastName;
cout << "Welcome " << fullName << endl;
return 0;
}
Ответ №2:
Вы путаете строки в стиле C с std::string
.
// C-style
char str[40];
// std::string
std::string str;
Это:
string fullName[40];
это массив из 40 строк, а не одна строка из 40 символов.
Комментарии:
1. Это полезная информация, но она не объясняет OP, как решить проблему или почему создание массива строк вызывает ошибку
std::getline
.