输出字符串时遇到问题。你能救我吗?
以下是const char * i
和const 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);
}
答案 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(); 代替。无论如何,谢谢大家。