编译器没有识别 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。此外,它也不允许cincout 使用字符串。该代码似乎可以与其他编译器(例如 Turbo C++、Dev C++、Linux、CodeBlocks)一起使用,但它不能在 Visual Studio 上编译。

我很困惑这里可能是什么问题。

【问题讨论】:

#include&lt;string&gt;了吗? 还有#include &lt;iostream&gt; @RSahu 这不是问题,getline 接受 string 是在 &lt;string&gt; 中定义的。 Source。顺便说一句,我不知道visual studio 2014 的存在。 @MateuszGrzejek OP 甚至不能在没有#include &lt;iostream&gt; 的情况下使用coutcin。所以,这是问题的一部分。 @MateuszGrzejek 两者都需要包括在内,因为&lt;iostream&gt; 可能只对std::string 使用前向声明。 【参考方案1】:

您缺少#include &lt;iostream&gt;。没有这个,你不能使用std::coutstd::cin。另外,您需要#include &lt;string&gt; 才能使用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 语句之前,让它在打印输出时暂停,以防您想查看它。

【讨论】:

我已经包含了 #include 和 #include 。我没有提到这些,因为我认为这是显而易见的,人们会理解的。 但是代码在 而不是在 中运行。这两个有什么区别?还有一个问题,我读到使用系统命令不是一个好的程序员的标志?是真的吗? @AnkitAcharya string.h 包含 strcpy、strlen 等旧函数。 &lt;string&gt; 主要包含 std::string 类(这是 getline() 所需要的)。此外,当您显示 using namespace std; 但不包含时,假设我们会理解是错误的。如果它解决了您的问题,请将答案标记为正确。谢谢 使用系统命令我的意思是 system("pause")、system ("cls") 等 string.h 但是在 dev c++ 中工作

以上是关于编译器没有识别 getline() 。此外,它也不允许 cin 和 cout 使用字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用 getline 获取字符串对象

在 sbt 中添加仅编译时依赖项

getline 函数未使用 mingw-w64 gcc 编译

通过Visual C ++编译器识别ARM软件中断(SWI)函数

即使我将字符串方法传递给参数python,它也不起作用

如果不允许用户在firestore中更新文档,那么它也不允许使用merge进行设置?