VS2010 SP1 C ++ STL字符串运行时行为在<string.h>和<string> </string> </string.h>之间有所不同

时间:2011-03-08 23:42:43

标签: c++

以下是差异的简单演示:

//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标头都存在)....是运行时混淆了吗?

1 个答案:

答案 0 :(得分:6)

string.h是一个 C 头文件,对应于c ++中的<cstring>。您应该包含定义<string>的{​​{1}}和所需的std::string。如果您需要C字符串函数,请包含operator<<并避免<cstring>