以下是差异的简单演示:
//if using <string> you can do cout << str
//if using <string.h> you must do cout << str.c_str() (else get runtime error)
#include <string>
#include <iostream>
using namespace std;
int main( int argc, char* argv[] )
{
char* pBuf;
string str = "Hello World";
//cout << str.c_str() << endl;
cout << str << endl;
return 0;
}
如何强制运行时库始终允许cout&lt;&lt; mystr(一致,无需添加mystring.c_str())????
我的应用程序是混合的(两个#include标头都存在)....是运行时混淆了吗?
答案 0 :(得分:6)
string.h
是一个 C 头文件,对应于c ++中的<cstring>
。您应该包含定义<string>
的{{1}}和所需的std::string
。如果您需要C字符串函数,请包含operator<<
并避免<cstring>