如何将字符串转换为字符? [复制]
Posted
技术标签:
【中文标题】如何将字符串转换为字符? [复制]【英文标题】:How to convert string to char? [duplicate] 【发布时间】:2014-08-05 07:08:26 【问题描述】:我在输出字符串时遇到问题。你能帮帮我吗?
下面给出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);
【问题讨论】:
使用std::copy()
。
你想做什么?要将temp
的内容复制到*o
吗?你为什么要传递char **
? mytask
是否也需要为字符串分配内存?
如果您告诉我们您想要做什么,将会很有帮助。看起来您正试图将 o
指向一个在您返回时将不再存在的对象。
为什么是const char **o
?您正在尝试在功能中对其进行修改,那么为什么要const
?
@Johnsyweb 连接..?
【参考方案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(); 反而。总之谢谢大家。
【讨论】:
以上是关于如何将字符串转换为字符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章