当前位置: 首页 > 知识库问答 >
问题:

理解C++字符串的问题-为什么我们在这里使用strcpy?

唐向荣
2023-03-14
string str;
str="hi brother";
char * cstr = new char [str.length()+1];
strcpy (cstr, str.c_str());

我们为什么不直接这么做呢

char *cstr = str.c_str();

如果我尝试这样做,它会给出一个错误。我不明白常量char和char是什么意思

为什么我们在这里使用strcpy函数?

共有1个答案

壤驷心思
2023-03-14

如果希望cstr最终指向字符串或真正的字符数组的副本,则需要在那里使用strcpy。如果希望它最终指向str在内部保存的相同字符数组,则可以使用

const char* cstr = str.c_str();

它必须是const,因为str拥有该字符串,因此只有它才允许修改该字符串;这就是const的意思。

 类似资料:
  • 我遇到了这个代码 我在字段上看到过@autowire,它的意思是按类型自动连接,使用这个字段的类将获得特定类型的bean。 但是在上面的代码中,我不确定是谁在使用这个RootResource bean? 这是spring-泽西Rest项目。 据我所知,spring将创建RootResource的bean,将使用这个bean来设置它的属性。(我看不到此bean的任何显式配置) 我的问题是, 1)这个

  • 我曾多次在CocoaPods中使用。我只是想知道我们为什么要用它?我无法得到这件事的直截了当的答案。

  • 测试代码为: 测试代码为: 你知道怎么了吗?

  • 我遇到JSON解析错误。我的代码如下: 我从我的检查中得到以下错误: 由于:com,无法分析JSON。谷歌。格森。JsonSyntaxException:java。lang.IllegalStateException:应为BEGIN\u对象,但在第1行第2列为BEGIN\u数组 对于我试图读取的JSON,如果成功,我的应该返回5。 我做错了什么?

  • 我使用Netty 4.1.16创建一个服务器。我建立一个管道: 在稍后的代码中,我将创建一个对传入消息的字符串响应,并尝试使用以下命令将其写入ChannelHandlerContext: ... 我的通灵之手是背景。writeAndFlush(字符串消息)失败,原因是 正如我所理解的文档和示例,WriteAndFlush应该向管道写入一个字符串,并且字符串编码器应该在将该字符串转发到套接字进行传输

  • 当我要遍历a-z时,我可以使用: 但是里面的原理是什么?为什么我们可以计算char而不需要转移到int来计算?