gpt4 book ai didi

c++ - 引用c++临时字符串的内容

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:02 27 4
gpt4 key购买 nike

以下代码正在运行,我正在尝试了解如何运行。

int Process::processTextFile(const boost::filesystem::path& infile)
{
const char *file = infile.string().c_str();
uint16_t num_lines = 0;
.
.
.
FILE *fp;
fp = fopen(file, "r");
.
.
//Use fp for reading and stuff.
}

根据我的理解,infile.string() 创建了一个临时文件并指向内容。在语句结束 (;) 的那一刻,临时字符串应该超出范围,导致文件成为悬空指针。

我将使用字符串而不是 char*,但仍然需要了解我缺少的内容。

编译器 - gcc 4.8.4
优化 - O3

最佳答案

infile.string() 返回类型为 std::string 的对象。而.c_str()返回的是指向对象某些内容的指针,所以file是指向对象内容的指针。但在语句结束时,std::string 对象及其内容被破坏。结果,指针 file 指向任何地方,在下一条语句的开头。

关于c++ - 引用c++临时字符串的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44586757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com