为什么此char *何时更改值?

这是您的App LLC

遵守以下代码。我从std::stringC风格字符串过渡另一个std::string原因bmd2create因为它是C Binding API的一部分,因此必须采用C风格字符串。否则,我会std::string尽可能使用

OtherFile.h

void bmd2create(const char * filename) {
  std::string sFileName (filename);

  // do things with sFileName

  std::ostringstream ostr;
  ostr << "\t(in)  filename       = " << filename << "\n";
  logger.log(Logger::LogLevel::LOG_DEBUG, ostr.str());
}

Main.cpp

const char * filename = std::string(filepath + "dataset1.out").c_str();

// *filename is 46 '.'

bmd2create(filename);

// *filename is now 0 '\0'

问题

文件名指针在何处以及为什么被移动?将其移回字符串开头的最佳方法是什么?

本·沃格特

这条线特别没用:

const char * filename = std::string(filepath + "dataset1.out").c_str();

您创建一个临时文件std::string,然后使用来获得指向其内容的指针c_str()在下一行执行之前,临时变量在完整表达式的末尾被清除。那时,指针无处可去。使用它是未定义的行为。

您认为指针在调用之前bmd2create是可以的,原因是指向的内存尚未被覆盖。但是它不再归字符串所有,因此任何将来的分配都可以用新对象替换它。

正确的代码是:

std::string filename = std::string(filepath) + "dataset1.out";
bmd2create(filename.c_str());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么此char *何时更改值?

来自分类Dev

为什么在调用另一个函数时此char数组会更改值?

来自分类Dev

为什么此变量的值会更改?

来自分类Dev

为什么分配此Cookie时不会更改其值?

来自分类Dev

为什么此脚本不更改目录

来自分类Dev

为什么不能更改此BufferedImage?

来自分类Dev

为什么不能更改此BufferedImage?

来自分类Dev

为什么此代码给出错误“无法将类型'char *&'的非常量左值引用绑定到类型为'char *'的右值”

来自分类Dev

为什么此结构需要大小值?

来自分类Dev

为什么此变量的值不确定

来自分类Dev

为什么未按值复制此对象

来自分类Dev

为什么此代码返回垃圾值?

来自分类Dev

为什么是NaN,但为什么打印此值?

来自分类Dev

为什么在输出期间转换char值?

来自分类Dev

为什么此循环在每个回合中更改所有值

来自分类Dev

为什么在未分配新值的情况下更改此引用?

来自分类Dev

当反应变量更改值时,为什么此函数不运行?

来自分类Dev

为什么此循环在每一轮中都会更改所有值

来自分类Dev

为什么不搁置何时对可变对象进行更改?

来自分类Dev

为什么此CSS“转换”值是“无效的属性值”

来自分类Dev

为什么此CSS“转换”值是“无效的属性值”

来自分类Dev

为什么此Powershell功能更改目录不起作用?

来自分类Dev

为什么此UnityScript代码不更改Unity中的场景?

来自分类Dev

为什么仍可以更改此最终变量?

来自分类Dev

为什么此参数列表在Python中不会更改?

来自分类Dev

为什么此For循环不会更改我的对象数组?JS

来自分类Dev

为什么此更改会导致段故障?

来自分类Dev

为什么我不能在C ++中更改多维char数组的值?

来自分类Dev

为什么此尝试更新注册表值失败?

Related 相关文章

  1. 1

    为什么此char *何时更改值?

  2. 2

    为什么在调用另一个函数时此char数组会更改值?

  3. 3

    为什么此变量的值会更改?

  4. 4

    为什么分配此Cookie时不会更改其值?

  5. 5

    为什么此脚本不更改目录

  6. 6

    为什么不能更改此BufferedImage?

  7. 7

    为什么不能更改此BufferedImage?

  8. 8

    为什么此代码给出错误“无法将类型'char *&'的非常量左值引用绑定到类型为'char *'的右值”

  9. 9

    为什么此结构需要大小值?

  10. 10

    为什么此变量的值不确定

  11. 11

    为什么未按值复制此对象

  12. 12

    为什么此代码返回垃圾值?

  13. 13

    为什么是NaN,但为什么打印此值?

  14. 14

    为什么在输出期间转换char值?

  15. 15

    为什么此循环在每个回合中更改所有值

  16. 16

    为什么在未分配新值的情况下更改此引用?

  17. 17

    当反应变量更改值时,为什么此函数不运行?

  18. 18

    为什么此循环在每一轮中都会更改所有值

  19. 19

    为什么不搁置何时对可变对象进行更改?

  20. 20

    为什么此CSS“转换”值是“无效的属性值”

  21. 21

    为什么此CSS“转换”值是“无效的属性值”

  22. 22

    为什么此Powershell功能更改目录不起作用?

  23. 23

    为什么此UnityScript代码不更改Unity中的场景?

  24. 24

    为什么仍可以更改此最终变量?

  25. 25

    为什么此参数列表在Python中不会更改?

  26. 26

    为什么此For循环不会更改我的对象数组?JS

  27. 27

    为什么此更改会导致段故障?

  28. 28

    为什么我不能在C ++中更改多维char数组的值?

  29. 29

    为什么此尝试更新注册表值失败?

热门标签

归档