Re: [问题] string和c_str()的奇怪输出

楼主: Killercat (杀人猫™)   2018-09-15 21:01:31
※ 引述《descent (“雄辩是银,沉默是金”)》之铭言:
: ※ 引述《KaryuuIssen (一闪)》之铭言:
: 这个 tmp_x 就不存在了。
: 所以你的指标 x 指向一个已经不存在的 tmp_x,
: 自然是任何事情都有可能发生了。
: : const char* y = string("222").c_str();
: : cout << x << "\n"; // 222(第一行不注解的话会是111)
: : cout << y << "\n"; // 222
: : }
: : 上面程式码x和y的输出都是222
这种错误还有另外一种很常见的形式,常见于下面这样:
class Foo {
const char* literal;
void setString(const char* a);
};
void foo::setString(const char* a) {
literal = a;
}
void foo::print() {
//作者既然那么传统的用const char*,会用传统的printf也很合逻辑
std::printf("%s", a);
}

Links booklink

Contact Us: admin [ a t ] ucptt.com