繁体   English   中英

C ++ const char *指针分配

[英]C++ const char* pointer assignment

我一定在这里错过了一个明显的事实-一段时间没有编程C ++。 将c样式的字符串分配给const char *变量后,为什么不能打印呢? 但是,如果我尝试直接打印而不分配它,效果很好:

#include "boost/lexical_cast.hpp"

using namespace std;
using boost::lexical_cast;

int main (int argc, char** argv)
{
    int aa=500;
    cout << lexical_cast<string>(aa).c_str() << endl;   // prints the string "500" fine

    const char* bb = lexical_cast<string>(aa).c_str();
    cout << bb << endl;                                 // prints nothing

    return EXIT_SUCCESS;
}

c_str返回的C字符串仅在从其获取std::string情况下可用。 一旦该std::string被销毁,C String也将消失。 (此时,尝试使用C String会产生未定义的行为。)

其他操作也可能会使C字符串无效。 通常,任何修改字符串的操作都会使c_str返回的指针无效。

lexical_cast创建的临时string的结果上调用c_str函数。 由于未保存该字符串,因此该字符串在该表达式的末尾被破坏,因此访问指向已被破坏的字符串的c_str的指针是不确定的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM