Как мне включить getline?

#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 это массив из 40 string сек, а не один 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 .