如何将字符串转换为char?

时间:2014-06-15 06:17:15

标签: c++ visual-c++

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

以下是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);
}

4 个答案:

答案 0 :(得分:1)

首先,您尝试分配一个本地字符指针并在调用函数中使用它,它已经被销毁。所以你应该这样做。假设为o:

分配了内存
strcpy(*o,temp.c_str());

答案 1 :(得分:1)

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

答案 2 :(得分:1)

在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) };
}

答案 3 :(得分:0)

声明     的strcpy(* O,temp.c_str()); 没用。我解决了这个问题     * o = temp.c_srt(); 代替。无论如何,谢谢大家。