std :: to_string存储在const char *中

用户名

我需要将数字转换为字符串并将其存储为一个,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内部缓冲区的指针
  • 销毁astd::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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

std :: string强制转换为const char *在std :: unordered_set <const char *>中找不到

在std :: __ cxx11 :: basic_string <char,std :: char_traits <char>,...,std :: allocator <char>> const&)中获取未知的分段错误“(地址)const()const()

std :: string和const char *

如何访问std :: string中的char数组?

为什么在片段中从char *到std :: string的转换比向const char *的转换更可取?

如何将std :: string转换为const char *或char *?

如何从文件系统中获取std :: string或char []?

将char *直接转换为fscanf中的std :: string

错误无法将赋值中的'std :: string {aka std :: basic_string <char>}'转换为'char'-C ++

std :: string.assign(const char *)或op =(带有const char *)会创建char *的副本吗?

'std::string {aka std::basic_string<char>}' 赋值中的不兼容类型

std :: string vs char [] vs char *

指针转换后处理 std::vector<char> 中的 std::string 时出现段错误

错误:没有匹配的函数调用'to_string(std :: basic_string <char>&)'

从std :: map <std :: basic_string <char>,std :: pair <int,int(*)(const std :: vector :: Mat

std::string 不是 std::vector<char> 吗?

如何从std :: vector <char>构造std :: string?

未定义引用`cv :: error(int,std :: string const&,char const *,char const *,int)'

将 std::string 称为 char*

std :: string转换为char *

创建 std::tuple 时从 const char* 或 char* 推导出 std::string

C++11 中 std::to_string 的奇怪输出

CentOS7 G ++“ to_string不在std的成员中”

如何将std :: string用于Const Char参数

为什么std :: string_view比const char *快?

C ++ const char *转换为std :: string&

std :: string :: compare(const char *)会抛出异常吗?

从“ std :: string”到“ const char *”的转换函数不存在

如何干净使用:const char *和std :: string?