C++ 如何包括getline?
这是我的代码:C++ 如何包括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]; st
#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需要包含的内容。你把C风格的字符串和std::string混淆了 这:
是一个包含40个字符串的数组,而不是一个包含40个字符的字符串。您将C样式字符串与std::string混淆 这: 是由40个字符串组成的数组,而不是由40个字符组成的单个字符串。std::string是一个长度可变的字符容器。声明它时不需要指定它的最大大小,当然也不需要使用[]语法 字符串firstName[20];是一个20个C++字符串数组。 charfirstname[20];是一个包含20个字符的数组,可以将其视为单个C样式字符串 getline希望填充单个std::字符串,而不是std::字符串数组。所有string[]数组都应该是单个std::strings,例如: 包括 包括 使用名称空间std; int main { 字符串名; 字符串lastName; 字符串全名; coutstd::string是一个长度可变的字符容器。声明它时,不需要指定它的最大大小,当然也不需要使用[]语法
字符串FixNeX[20;是20个C++字符串的数组。< /P> char firstName[20];是一个由20个字符组成的数组,可以将其视为单个C样式字符串
std::getline希望填充单个std::string,而不是std::string数组。所有string[]数组都应该是单个std::string,例如: 包括 包括 使用名称空间std; int main { 字符串名; 字符串lastName; 字符串全名;cout fullName是一个由40个字符串组成的数组,而不是单个字符串。请将您的确切错误消息复制并粘贴到问题正文中。更改字符串fullName[40];to string fullName;执行类似于firstName和lastName的操作。您不需要一个包含40个名称的数组。std::string不是这样工作的。它将根据getline的输入分配所需的大小。对于我们许多人来说,错误号几乎毫无价值。我们使用的是不同的编译器。在底部靠近错误列表选项卡的地方,您将找到Out输出选项卡。在输出选项卡中,您可以找到完整的纯文本生成输出。您可以复制文本并将其粘贴到问题中。请注意,完整的生成输出通常包含您自己解决问题所需的额外提示。全名是一个由40个字符串组成的数组,而不是单个字符串。请复制并粘贴您的确切的e错误消息进入问题正文。更改字符串全名[40];to string fullName;执行类似于firstName和lastName的操作。您不需要一个包含40个名称的数组。std::string不是这样工作的。它将根据getline的输入分配所需的大小。对于我们许多人来说,错误号几乎毫无价值。我们使用的是不同的编译器。在底部靠近错误列表选项卡的地方,您将找到Out输出选项卡。在输出选项卡中,您可以找到完整的纯文本生成输出。您可以复制文本并将其粘贴到问题中。请注意,完整的生成输出通常包含您自己解决问题所需的额外提示。这是有用的信息,但它没有向OP解释如何解决问题或为什么创建字符串数组会导致std::getline出错。这是有用的信息,但没有向OP解释如何解决此问题,也没有解释为什么创建字符串数组会导致std::getline出错。
// C-style
char str[40];
// std::string
std::string str;
string fullName[40];