【问题标题】:How to convert string to char? [duplicate]如何将字符串转换为字符? [复制]
【发布时间】:2014-08-05 07:08:26
【问题描述】:

我在输出字符串时遇到问题。你能帮帮我吗?

下面给出const char * iconst char ** o

语句“*o = temp”产生错误,表示“std::string”和“const char *”不适合。有什么问题?

int mytask(const char * i, const char ** o)
{
    std::string temp = std::string("mytask:") + i;

    *o = temp; //How to modify?

    return (0);
}

【问题讨论】:

  • 使用std::copy()
  • 你想做什么?要将temp 的内容复制到*o 吗?你为什么要传递char **mytask 是否也需要为字符串分配内存?
  • 如果您告诉我们您想要做什么,将会很有帮助。看起来您正试图将 o 指向一个在您返回时将不再存在的对象。
  • 为什么是const char **o?您正在尝试在功能中对其进行修改,那么为什么要const
  • @Johnsyweb 连接..?

标签: c++ visual-c++


【解决方案1】:

首先,您尝试分配一个本地 char 指针并在调用函数中使用它,该函数已被销毁。因此,您应该这样做。假设内存分配给 o:

strcpy(*o,temp.c_str());

【讨论】:

    【解决方案2】:

    *o=temp 表示您将 o 指向指向 std::string 的指针,但是 o 是指向 char(或字符序列)的指针。这是不允许的。另一种方法是:temp=*o,因为 std::string 对象定义了当您将 char* 分配给它时会发生什么(将空终止的字符串复制到对象中)。如果您绝对必须从 temp 复制到 o* 指向的 char* 中。使用strcpy()std::string.c_str() strcpy(*o,temp.c_str())

    【讨论】:

      【解决方案3】:

      在 C++ 中,以这种方式传递原始指针并不常见。

      返回0 也没有多大作用。

      我希望看到这样的东西:

      std::string mytask(std::string const& i)
      {
          return "mytask:" + i;
      }
      
      int main()
      {
          std::string const number { '1' };
          std::string const ret { mytask(number) };
      }
      

      【讨论】:

        【解决方案4】:

        声明 strcpy(*o,temp.c_str()); 没用。我解决了这个问题 *o = temp.c_srt(); 反而。总之谢谢大家。

        【讨论】:

          猜你喜欢
          • 2015-08-17
          • 1970-01-01
          • 2015-10-23
          • 2012-05-23
          • 2012-09-06
          • 2019-06-17
          相关资源
          最近更新 更多