使用字符串时,C ++程序会产生运行时错误

时间:2014-06-28 16:35:53

标签: c++ string netbeans mingw

#include <iostream> 
#include <string.h> 
using namespace std; 

int main () 
{ 
    string st = "Hello world";
    return 0; 
}

#include <string> 
int main () 
{ 
    std::string st = "Hello world";
    return 0; 
}

我尝试在netbeans上使用minGW编译器编译此代码。成功构建后会出现以下错误。

RUN FAILED(退出值-1,073,741,511,总时间:93ms)

但是当不使用字符串时它会很干净。我想知道我在这里做错了什么。提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用c ++字符串,不要使用using namespace std

#include <string> //c++ string header

int main () 
{ 
    std::string st = "Hello world";
    return 0; 
} 

#include <string.h>是旧的C风格字符串标题,很可能不是您想要在这里使用的。有关详细信息,请参阅此问题:Difference between <string> and <string.h>?

注意:如果你真的想要旧的C风格字符串,那么你真的应该使用#include <cstring>,因为这会将这些函数放入std命名空间,并且不会导致任何命名空间污染导致其他不良后果。

可能发生的事情是您使用旧样式字符串标头并且未正确初始化这些字符串。旧的C风格字符串没有构造函数,operator =定义为std::string类。

编辑:在查看Netbeans论坛后,这是Netbeans的问题,而不是c ++问题。尝试将输出更改为Netbeans中的外部终端。或者直接从命令行运行程序。如果这些方法无法解决问题或不受欢迎,请在Netbeans论坛上发帖。另请看这个问题:Program won't run in NetBeans, but runs on the command line!

答案 1 :(得分:0)

Uss #include <string>而不是string.h