我需要将数字转换为字符串并将其存储为一个,const char*
但是问题是const char*
赋值后变量为空。
在以下示例代码中,我希望看到将数字输出转换为 const char*
#include <iostream>
#include <string>
int main()
{
int number = 123;
const char* ptr_num_string = std::to_string(number).c_str();
std::cout << "number to string is: " << ptr_num_string << std::endl;
std::cin.get();
return 0;
}
输出为空白:
字符串编号为:
如何将数字转换为const char *?
std::to_string
返回一个临时值 std::string
。std::string::c_str
的任何非const
操作而无效string
-这是因为它基本上为您提供了指向string
内部缓冲区的指针。std::string
绝对是不可const
操作的!因此,您不能指望将指针带入string
返回的对象,to_string
也永远无法使用它。您首先需要保存一个副本string
:
int number = 123;
std::string const numAsString = std::to_string(number);
char const* ptrToNumString = numAsString.c_str(); // use this as long as numAsString is alive
您正在做的事情称为未定义行为-这意味着您的程序无效,并且可能发生任何事情。它可能崩溃,可以打印出一些垃圾,看起来可以正常工作,每次运行程序时都可以执行不同的操作...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句