[英]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.