编译代码时出错

时间:2013-06-20 14:45:35

标签: c++ printf declaration

我在编译此代码时收到此错误 string undeclared

#include <stdio.h>
#include <stdlib.h>


int main()
{
string names;
printf("What is your name?\n");
scanf("%s", &names);

printf("Your name is %s", names);
return 0;
}

有人可以告诉我原因。非常感谢

5 个答案:

答案 0 :(得分:8)

你应该包含字符串标题:

#include <string>

并且在使用时不要忘记命名空间std

std::string names;

此外,编码时不要混用C和C ++。尝试使用std::cout而不是printfcin/getline而不是scanf

答案 1 :(得分:3)

您需要添加

#include <string>

从C ++标准库中引用字符串,并声明您正在使用带有

的std
using namespace std;

请参阅here

答案 2 :(得分:2)

如果您正在编写C ++,那么标准字符串类称为std::string,位于标题<string>中。但是你通常不想使用printfscanf,你会使用C ++ I / O:

#include <iostream>
#include <string>

int main()
{
    using namespace std;
    string names;
    cout << "What is your name?" << endl;
    getline(cin, names);
    cout << "Your name is " << names << endl;
}

如果(尽管有问号标签)你正在写C,那么就没有名为string的类型。字符串通常由字符数组表示:

char names[SOME_LARGE_NUMBER];

但请注意,除非您非常小心,否则scanf可能会超出缓冲区并导致各种运行时错误。

答案 3 :(得分:0)

因为std :: string是在未包含的头字符串中定义的,并且因为其完整且正确的名称是std :: string,而不仅仅是字符串。

答案 4 :(得分:0)

您错过了包含printfscanf定义的标头文件。将#include <string.h>添加到代码中。

此外,我认为代码最终没有return 0;行。