C++ 字符串到 C 字符串

标签 c++ c string

考虑以下代码:

void fun (string &str1, string &str2)
{
   const char* cstr;
....
   if(strlen(cstr = (str1+str2).c_str()) < 15)
   {
      // here cstr used
   }
}

条件本身工作正常,但在 if 条件体 cstr 中包含垃圾。为什么?

最佳答案

在这个表达式中:

cstr = (str1+str2).c_str()

您正在使用指向临时 字符串str1 + str2 的指针。这个临时变量在表达式的末尾终止,因此当您尝试从 if-body 中的 cstr 读取时,您会遇到未定义的行为。

关于C++ 字符串到 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61664817/

相关文章:

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - 使用 C++ 在 Linux 中检查文件是否存在和文件权限的最佳方法是什么

c - 使用 fread 从文件中读取奇怪的文本

c - 如何防止内存泄漏

java - 跟踪已返回哪些 HashMap 值

c++ - Linux下如何压缩图片?

c++ - 为什么 std::less<Eigen::VectorXd> 编译失败?

c - 无法同时理解此 C 程序中的数组和结构

javascript - 正则表达式在字符串 javascript 中的每个匹配项后添加文本

C:如何为字符串分配准确数量的字节?