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

理解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。 我做错了什么?

  • 问题内容: 我是一个完整的初学者。 我已阅读了有关解决方案的Google文档。我在互联网上搜索了同样的内容。 但。一切似乎都是技术性的。 据我了解,.Flush有助于在功能出现时立即执行这些功能,而无需将它们捆绑在一起。 我对吗? 如果不是的话,外行人的含义是什么?并请举一个简单的例子。谢谢。 问题答案: 程序员在希望确保在继续之前将先前代码的输出和/或效果写入电子表格时会使用。如果您不这样做,则

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