terminate called after throwing an instance of 'stdz::logic_error'

2012年12月4日 | 由 helight | 200字 | 阅读大约需要1分钟 | 归档于 linux 应用 | 标签 #uwsgi #django

程序编译没有问题,突然在测试的时候出了这样的问题。

terminate called after throwing an instance of ‘std::logic_error’ what(): basic_string::_S_construct NULL not valid

这个问题在我这里是因为调用了getenv,但是在测试的是后getenv的返回值是一个空值,而我没有检查就直接给string赋值。

就造成了c++中string构造的失败。

所以在写法上要注意对这种string空构造的失败。下面的方法可以避免string的空构造。

const char* query_string = getenv("QUERY_STRING");

std::string q_string = query_string ? query_string : "";