首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换为std::string并在一行中获取const char *

转换为std::string并在一行中获取const char *
EN

Stack Overflow用户
提问于 2017-09-23 04:27:45
回答 4查看 1.2K关注 0票数 1

我有一个数字,需要将其转换为const char * (我正在使用的API需要const char *作为它的许多函数的输入)。以下工作:

代码语言:javascript
运行
复制
int num = 5;
std::string s = std::to_string(5);
const char * p = s.c_str();

正如类似于?中的答案所建议的,但它涉及创建看似不必要的变量s,因此我尝试了以下操作,但它不起作用(p指向后面的空字符串):

代码语言:javascript
运行
复制
int num = 5;
const char * p = std::to_string(num).c_str();

我有办法做到这一点吗?为什么第二个例子不起作用?如果我犯了这个明显的错误,这种行为非常类似于发生了什么:

代码语言:javascript
运行
复制
const char * p;
{
    std::string tempStr( "hi" );
    p = tempStr.c_str( );
    // p points to "hi" string.
}
// now p points to "" string.

这使我怀疑,std::to_string(num)问题立即超出了范围或类似的范围,因为它不用于直接初始化任何内容。

EN

Stack Overflow用户

发布于 2017-09-23 04:40:20

在任何地方使用std::string,不使用const char*时不要使用。他们基本上是一样的。我只在使用文件路径时才使用const char*。在任何地方使用std::string,您的程序就会正常工作。

票数 -1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46376043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档