C++ gets()导致编译失败,使用'';使用未声明的标识符';获取'&引用;错误

C++ gets()导致编译失败,使用'';使用未声明的标识符';获取'&引用;错误,c++,compiler-errors,gets,C++,Compiler Errors,Gets,我正在努力解决这个问题。我将字符作为输入并使用get()。但函数显示了上述错误 我不知道为什么这个函数有问题。请帮我找出毛病。我是初学者 如前所述,错误消息为: 使用未声明的标识符“get” 我的C++代码: #include <bits/stdc++.h> using namespace std; int main() { char line[1000]; bool open = true; while (gets(line)) //***in thi

我正在努力解决这个问题。我将字符作为输入并使用
get()
。但函数显示了上述错误

我不知道为什么这个函数有问题。请帮我找出毛病。我是初学者

如前所述,错误消息为:

使用未声明的标识符“get”
<>我的C++代码:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    char line[1000];
    bool open = true;
    while (gets(line))  //***in this line gets() is showing error***
    {
        int len = strlen(line);
        for (int i = 0; i < len; i++)
        {
            if (line[i] == '"')
            {
                if (open)
                {
                    printf("``");
                }
                else
                {
                    printf("''");
                }
                open = !open;
            }
            else
            {
                printf("%c", line[i]);
            }
        }
        printf("\n");
    }

    return 0;
}
#包括
使用名称空间std;
int main()
{
字符行[1000];
bool open=true;
而此行中的(gets(line))/***gets()显示错误***
{
int len=strlen(直线);
对于(int i=0;i

std::get
在C++11中被弃用,并从C++14中删除,尽管有些编译器仍然提供它,但看起来它不是您的情况,这是一件好事

您应该使用类似,注意,为此,您需要将
参数设置为
std::string

string line;

//...

while (getline(cin, line)){
    //...
}
或者,如果您确实需要
char
数组,则可以使用:

旁注:


请考虑并按照链接查看详细信息。

std::get
在C++11中被弃用,并从C++14中删除,尽管有些编译器仍然提供了它,但看起来它不是您的情况,这是一件好事

您应该使用类似,注意,为此,您需要将
参数设置为
std::string

string line;

//...

while (getline(cin, line)){
    //...
}
或者,如果您确实需要
char
数组,则可以使用:

旁注:

请考虑并按照链接查看详细信息。

get()已被弃用。请阅读相关内容

但是让我们先来看看你为什么会出错的根本原因。 一个

未声明的标识符“get”

错误是因为编译器找不到正在使用的函数的声明。在本例中,gets()是在stdio.h中定义的

我还看到,您正在按照建议使用,为此,您需要包含
字符串
标题

请看一下我提到的两个链接,以了解正确的用法。

gets()如前所述已被弃用。请阅读相关内容

但是让我们先来看看你为什么会出错的根本原因。 一个

未声明的标识符“get”

错误是因为编译器找不到正在使用的函数的声明。在本例中,gets()是在stdio.h中定义的

我还看到,您正在按照建议使用,为此,您需要包含
字符串
标题


看看我提到的2个链接,了解正确的用法。<……………………我使用C++ 14。这就是为什么它显示错误。@ SatyajitRoy,这并不意味着你应该回到C++ 11。这意味着你应该停止使用<代码>获取< /代码>,也许开始真正学习C++。哦……我使用C++ 14。这就是为什么它显示错误。@ SatyajitRoy。这并不意味着你应该回到C++ 11。这意味着你应该停止使用<代码>获取< /C> >,也许开始真正学习C++。在你所显示的代码中存在太多的问题。让我们从<代码> <代码>开始。然后<代码>获取< /代码>,这是永远不应该使用的。那么,只有代码中的两行是特定的问题。对于C++,剩下的可以是C.谁,或者在哪里教过你“C++”?除此之外,欢迎使用堆栈溢出。请阅读,使用SO,阅读,以及最后。请。如果你有构建错误,然后复制粘贴完整和完整的构建输出(作为文本!)我通常不使用

bits/stdc++.h>
但是我在这个文件中使用头文件,因为
gets()显示错误,我尝试了很多头文件,但不起作用。这就是为什么我在代码中使用了<代码> >代码>代码中出现了很多问题。让我们从<代码> <代码>开始……然后<代码>获得不应该使用的代码。这就是代码中只有两行特定于C++的问题。t可以是普通的C。谁、在哪里或什么教了你“C++”?除此之外,欢迎来到堆栈溢出。请阅读,接受SO,阅读,以及。最后请。如果你有构建错误,那么复制粘贴完整的构建输出(作为文本!)我通常不使用
bits/stdc++.h>
,但我在这个文件中使用头文件,因为
get()
显示错误,我尝试了很多头文件,但都不起作用。这就是我在这个代码中使用
的原因。