编译器没有识别 getline() 。此外,它也不允许 cin 和 cout 使用字符串
Posted
技术标签:
【中文标题】编译器没有识别 getline() 。此外,它也不允许 cin 和 cout 使用字符串【英文标题】:compiler isnt identifying getline() . moreover it isn't letting cin and cout use strings as well 【发布时间】:2015-04-30 18:32:11 【问题描述】:我使用 C++ 编程已有 3 年了。我使用过 turbo c++、Dev c++、linux 和 codeblocks 等编译器。
最近,我开始使用 Visual Studio 2014 C++,但遇到了字符串问题。
using namespace std;
int main()
string s;
cout << "enter string: ";
getline(cin, s);
cout << s;
return 0;
但是,编译器无法识别getline
。此外,它也不允许cin
和cout
使用字符串。该代码似乎可以与其他编译器(例如 Turbo C++、Dev C++、Linux、CodeBlocks)一起使用,但它不能在 Visual Studio 上编译。
我很困惑这里可能是什么问题。
【问题讨论】:
你#include
<string>
了吗?
还有#include <iostream>
。
@RSahu 这不是问题,getline
接受 string
是在 <string>
中定义的。 Source。顺便说一句,我不知道visual studio 2014
的存在。
@MateuszGrzejek OP 甚至不能在没有#include <iostream>
的情况下使用cout
或cin
。所以,这是问题的一部分。
@MateuszGrzejek 两者都需要包括在内,因为<iostream>
可能只对std::string
使用前向声明。
【参考方案1】:
您缺少#include <iostream>
。没有这个,你不能使用std::cout
或std::cin
。另外,您需要#include <string>
才能使用std::getline()
和std::string
。
#include <iostream>
#include <string>
using namespace std;
int main()
string s;
cout<<"enter string: ";
getline(cin,s);
cout<<s;
return 0;
您还可以将system("pause");
放在return
语句之前,让它在打印输出时暂停,以防您想查看它。
【讨论】:
我已经包含了 #includestring.h
包含 strcpy、strlen 等旧函数。 <string>
主要包含 std::string
类(这是 getline()
所需要的)。此外,当您显示 using namespace std;
但不包含时,假设我们会理解是错误的。如果它解决了您的问题,请将答案标记为正确。谢谢
使用系统命令我的意思是 system("pause")、system ("cls") 等 string.h 但是在 dev c++ 中工作以上是关于编译器没有识别 getline() 。此外,它也不允许 cin 和 cout 使用字符串的主要内容,如果未能解决你的问题,请参考以下文章
getline 函数未使用 mingw-w64 gcc 编译