C ++没有从字符串到const char *的可行转换* [重复]

Posted

技术标签:

【中文标题】C ++没有从字符串到const char *的可行转换* [重复]【英文标题】:C++ No viable conversion from string to const char * [duplicate] 【发布时间】:2015-08-28 19:26:32 【问题描述】:

我正在使用 C++(使用 CERN 的 ROOT 框架),但字符串有点问题。我正在尝试使用用户在代码前面定义的字符串来标记直方图轴。以下是代码的相关部分:

string xlabel;

...
cout << "Enter x-axis label:" << endl;
getline(cin >> ws, xlabel);

...

hist->GetXaxis()->SetTitle(xlabel);

最后一行只是 ROOT 使用的语法(通常这里的 xlabel 会用引号引起来,您可以输入您想要的标签,但我正在尝试输入代码中前面定义的字符串。)

无论如何,当我编译这个时,我得到以下错误:

error: no viable conversion from 'string'
      (aka 'basic_string<char>') to 'const char *'
        hist->GetXaxis()->SetTitle(xlabel);
                                   ^~~~~~

我尝试将 xlabel 重新定义为 const char * 但它也不喜欢那样。有人对我如何定义这个字符串有任何建议吗?

提前致谢!

【问题讨论】:

你错过了对 c_str() 的调用 std::string::c_str(). 【参考方案1】:

这样做:

hist->GetXaxis()->SetTitle(xlabel.c_str());
//                               ^^^^^^^^

【讨论】:

成功了!我只是查看了 c_str() 的作用,现在它完全有意义了。非常感谢!

以上是关于C ++没有从字符串到const char *的可行转换* [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#从字符串[]到Char [] []

转到 [] 字符串到 C 字符**

C语言中int和char之间的转化问题

从初识到进阶,硬核解说C语言< 进阶篇 1 > 深度剖析数据在内存中的存储

如何将字符串从文件复制到 C 中的链表?

C 中的字符串文字与 const char*