【问题标题】:What is the most efficient way to convert a string to a char array/ value that a char pointer can point to将字符串转换为 char 指针可以指向的 char 数组/值的最有效方法是什么
【发布时间】:2023-03-07 17:52:02
【问题描述】:

如果我有一个字符串:

std::string Pooptacular = "Pooptacular"

我想将其转换为 char 数组,我有一些选择 一个是:

char* poopCArr = Pooptacular.c_str();

或者我可以用 memcpy 或 strcpy 等做一些事情。

我想知道的是,这些方法中哪个最快 或最有效的。换句话说,如果我应该使用哪种方法 我要在一个程序运行中执行数十万次?

【问题讨论】:

  • 取决于使用情况。 .c_str() 不复制任何东西,只是将const char* 返回到内存中,在std::string 中使用。你会修改它吗?另外,const char* poorCArr 不是 char 数组。
  • 你试过测量什么吗?

标签: c++ arrays string char memcpy


【解决方案1】:

如果您只需要指向数据的只读指针,请使用c_str。它不会转换任何东西。它只是让您访问已分配的缓冲区string。当然,如果你想改变它,你必须把它复制到一个新的缓冲区,如果你这样做了,不要期望你的改变会反映在你原来的string对象中。

【讨论】:

  • 正是我所需要的。非常感谢
  • 关于这个答案的另一件事是,当您使用string::c_str 询问指针时,您会得到一个指向内部字符串数据的指针,这违反了封装原则,它即使您依赖此指针执行只读操作也可能很麻烦:如果删除const char *std::string 实例所有者会发生什么情况?恕我直言,最好使用 std::string 对象而不是其 const char * 内部指针顺便说一句:@kjh 不要忘记将答案标记为已接受;)
猜你喜欢
  • 2014-09-02
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多