-6ren">
gpt4 book ai didi

c++ - 为什么我在 dev c++ 中使用 "gets function"后不能使用 "cin function"?

转载 作者:行者123 更新时间:2023-11-30 01:22:11 25 4
gpt4 key购买 nike

这是我的代码:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

main()
{
char a[120];
int b;

cout<<"age : ";
cin>>b;

cout<<"Name : ";
gets(a);

cout<<"Name : "<<a<<endl;
cout<<"age : "<<b;
cout<<endl;

system("pause");
return 0;
}

输出:age : 20//我输入 20名称:名称://它不要求键入名称。年龄:20按任意键继续...

但是,如果我先使用 gets(a) 就可以了。

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

main()
{
char a[120];
int b;

cout<<"Name : ";
gets(a);

cout<<"age : ";
cin>>b;

cout<<"Name : "<<a<<endl;
cout<<"age : "<<b;
cout<<endl;

system("pause");
return 0;
}

输出:姓名:约翰//我输入约翰。age : 20//我输入 20。

姓名:约翰年龄:20按任意键继续...

他们怎么了...请帮助...

最佳答案

无论您现在正在学习的书籍/互联网教程,都请扔掉。不,认真的。这段代码读起来就像是在 1992 年写的。Here is the list of books recommended by Stack Overflow community.

此外,如果您的 Dev-C++ 版本是 4.9.9.2,我强烈建议您进行更新 - 更新的 IDE 将提供更好的编辑器、更好的调试器,以及(非常重要的)更好的编译器。更好的编译器会给你更好的错误信息,这在学习 C++ 时很重要(相信我,我从经验中知道)常见的替代品是:Visual C++、Code::Blocks 或者如果你喜欢 Dev-C++,只需升级到 Orwell开发-C++。

现在让我们快进到 2013 年。

警告

有几个笑话可以简化为“嗯,我只听错误而不是警告”。他们错了。 95% 的警告意味着代码是错误的。由于 C++ 是一种棘手的语言,每个人都应该在他们的 IDE 中启用警告(令我困惑的是为什么默认情况下不启用它们)。

标题

在 C++ 中引入命名空间意味着旧 header 已被弃用。这意味着在编写新代码时不应使用它们。

header 名称更改如下:

  • 内置 C++ 头文件末尾没有“.h”。 ("iostream.h"--> "iostream")

  • 源自 C 的头文件末尾没有“.h”,而且它们以“c”为前缀(“stdio.h” --> “cstdio”)

  • conio.h 既不是内置 C 头文件也不是内置 C++ 头文件,因此名称保持不变。

Here is list of standard headers

字符串

C++ 有一个字符串类型。 std::string .它允许轻松进行简单的字符串操作。就#include <string>使用它。

string first_name = "John";
string surname = "Titor";
string full_name = first_name + " " + surname; //easy concatenation

//string a = "first" + " " + "name" //nasty surprise

string c = "first" + string(" ") + "name" //much better
//or using stringstream (#include <sstream>)
stringstream ss;
ss << "first" << " " << "name";
c = ss.str();

gets()

此功能无法安全使用 - 它既不限制用户输入也不扩展缓冲区。在您的示例代码中,有人可以输入超过 120 个字符并最终引发未定义的行为。该术语等同于数学的未定义行为 - 任何事情都可能发生,包括 1 等于 2。 gets()函数最近完全从 C 语言中删除。C++ 有一个安全的替代方案。

string s;
getline(cin, s);

正确声明 main()

int main()

int main(int argc, char* argv[])

关于c++ - 为什么我在 dev c++ 中使用 "gets function"后不能使用 "cin function"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16855275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com