【问题标题】:Cannot convert std::stringstream<char> to const char*无法将 std::stringstream<char> 转换为 const char*
【发布时间】:2015-09-03 12:03:12
【问题描述】:

我尝试在 system() 函数的帮助下运行命令,转发参数如下代码:

std::stringstream volume_control;
int volume_value = 5;
volume_control << "/usr/bin/amixer cset numid=1 " << volume_value << std::endl;
system(volume_control.str());

它不起作用,因为 std::stringstream 到 const char* 的转换不成功。

我知道在 std::string 的情况下,我有方法 std::c_string() 如果我是对的,它会返回我需要的 const char* 类型,但在这种情况下 stringstream 不存在该方法。那么该怎么办呢?

【问题讨论】:

    标签: c++ string


    【解决方案1】:

    volume_control.str() 返回std::string 类型。你需要调用std::string::c_str()或者std::string::data()方法就可以了。

    谷歌搜索很容易给你答案。

    system(volume_control.str().c_str());
    

    【讨论】:

    【解决方案2】:

    您应该对从str 方法返回的string 使用c_str 方法。

    system(volume_control.str().c_str());
    

    【讨论】:

    • @ForEveR 哎呀,你是对的!关联的案例是一个不同的问题!对不起,谢谢!
    【解决方案3】:

    你可以参考这个链接 stringstream, string, and char* conversion confusion

    { const std::string&amp; tmp = stringstream.str(); const char* cstr = tmp.c_str(); }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 2014-07-13
      • 2018-11-16
      • 1970-01-01
      相关资源
      最近更新 更多