gpt4 book ai didi

c++ - 将文件转换为 char* 问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:36:08 26 4
gpt4 key购买 nike

我是 C++ 编程的初学者,我遇到了一个问题。我希望能够将文件的内容转换为 char*,并且我使用了文件流和字符串流。但是,它不起作用。

这是我的函数:

char* fileToChar(std::string const& file){

std::ifstream in(file);
if (!in){
std::cout << "Error: file does not exist\n";
exit(EXIT_FAILURE);
}

std::stringstream buffer;
buffer << in.rdbuf() << std::flush;
in.close();

return const_cast<char *>(buffer.str().c_str());
}

但是,当我通过将其内容输出到另一个文件来测试该方法时,如下所示:

std::ofstream file("test.txt");
file << fileToChar("fileTest.txt");

我只是得到了很多像这样的奇怪字符:

îþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþ[...etc]

这里到底发生了什么?有什么我错过的吗?如果有更好的方法来做到这一点,我会很高兴知道!

最佳答案

return const_cast<char *>(buffer.str().c_str());

返回指向本地stringstream 的内部缓冲区临时拷贝的内部字符缓冲区的指针。 .长话短说:一旦你退出这个函数,这个指针就会指向垃圾。

顺便说一句,即使这不是问题,const_cast胡说八道是危险的,你不能通过指针写std::string::c_str返回。 const_cast 的合法用途极其罕见。

更好的方法:最好和最简单的方法是返回 std::string .只有在不允许的情况下,一个 std::vector<char> (首选)或 new char[somelength] (皱眉)将是可行的解决方案。

关于c++ - 将文件转换为 char* 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454230/

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