我在编译此代码时收到此错误 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;
}
有人可以告诉我原因。非常感谢
答案 0 :(得分:8)
你应该包含字符串标题:
#include <string>
并且在使用时不要忘记命名空间std
:
std::string names;
此外,编码时不要混用C和C ++。尝试使用std::cout
而不是printf
,cin/getline
而不是scanf
。
答案 1 :(得分:3)
答案 2 :(得分:2)
如果您正在编写C ++,那么标准字符串类称为std::string
,位于标题<string>
中。但是你通常不想使用printf
或scanf
,你会使用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)
您错过了包含printf
和scanf
定义的标头文件。将#include <string.h>
添加到代码中。
此外,我认为代码最终没有return 0;
行。