为什么这个简单的C++程序不会编译?

Saq*_*Ali 0 c++

这是我非常简单的C++函数:

#include <string.h>


void myFunc(void * param)
{
        string command;
}
Run Code Online (Sandbox Code Playgroud)

为什么不编译?

% CC -c -o testFunc.o testFunc.C
"testFunc.C", line 6: Error: string is not defined.
1 Error(s) detected.
Run Code Online (Sandbox Code Playgroud)

Bil*_*eal 8

<string.h>是从C和定义如C字符串处理函数memcmpstrcpy,而不是C++类string.在标准C++中,标题是<string>,并且类string在命名空间中std.


Aus*_*ley 6

它没有正确编译它告诉你的原因:

Error: string is not defined.
Run Code Online (Sandbox Code Playgroud)

更改<string.h><string>.

还要确保使用正确的命名空间.你可以这样做:

using std::string;
Run Code Online (Sandbox Code Playgroud)

要么

std::string command;
Run Code Online (Sandbox Code Playgroud)

更多解释:

  • <string.h> 用于C中的C字符串
  • <cstring> 用于C++中的C字符串.
  • <string>适用于C++ std::string.