我写了下面的代码片段:
#include <string>
int main() {
std::string str = "test";
(str == "tes") ? str.replace(0, 1, "T") : 0;
}
不幸的是,它会导致一个逻辑错误
:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
我想知道编译器为什么要构建一个字符串对象?
std::string
的表达式采用了const char*
构造函数,它们是相同类型,只是它认为正在从空指针构造字符串(这就是引发错误的原因)。 - Alex Huszagh