我对C++编程非常陌生,几乎没有经验。我的问题是:我想使用字符串,所以我在代码中的include中添加了#include,但VSCode告诉我identifier "string" is undefinedC/C++(20)
。我所做的是添加和修改了一个c_cpp_properties.json文件vor VSCode:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
但这并没有解决问题。此外,我已经确保安装了C++,包括g++编译器。在VSCode中,我使用以下C++插件/插件:C/C++和C/C++项目生成器(我并没有真正使用)。这是我代码的相关部分:
#include <iostream>
#include <string>
int main(int argc, char *argv[])
{
string s;
return 0;
}
这是错误日志/调试消息:
g++ -std=c++17 -Wall -Wextra -g -Iinc -c src/main.cpp -o src/main.o
src/main.cpp: In function ‘int main(int, char**)’:
src/main.cpp:30:2: error: ‘string’ was not declared in this scope
30 | string s;
| ^~~~~~
src/main.cpp:30:2: note: suggested alternatives:
In file included from /usr/include/c++/9/iosfwd:39,
from /usr/include/c++/9/ios:38,
from /usr/include/c++/9/ostream:38,
from /usr/include/c++/9/iostream:39,
from src/main.cpp:1:
/usr/include/c++/9/bits/stringfwd.h:79:33: note: ‘std::string’
79 | typedef basic_string<char> string;
| ^~~~~~
In file included from /usr/include/c++/9/bits/locale_classes.h:40,
from /usr/include/c++/9/bits/ios_base.h:41,
from /usr/include/c++/9/ios:42,
from /usr/include/c++/9/ostream:38,
from /usr/include/c++/9/iostream:39,
from src/main.cpp:1:
/usr/include/c++/9/string:67:11: note: ‘std::pmr::string’
67 | using string = basic_string<char>;
| ^~~~~~
解决方案:将string s;
替换为std::string s;
。
C++字符串是"隐藏的";在CCD_ 4名称空间内。因此编译器无法识别string
。
您可以包含整个std
名称空间:
using namespace std;
对特定字符串执行此操作,而不执行其他操作:
using std::string;
或者在初始化字符串时键入CCD_ 7而不是CCD_。默认情况下,C++标准库在编译器的include路径中,您不需要做任何额外的操作就可以使用它的头。