2

我想要做的是读取一个名为“test.txt”的文件,然后将文件的内容设为 const char * 类型。如何做到这一点?

4

3 回答 3

6
#include <string>
#include <fstream>

int main()
{
   std::string line,text;
   std::ifstream in("test.txt");
   while(std::getline(in, line))
   {
       text += line + "\n";
   }
   const char* data = text.c_str();
}

注意不要对数据显式调用 delete

于 2010-10-24T20:14:43.473 回答
6

你不太可能真的想这样做。文件的内容(可能是文本或二进制数据)不太可能表示指向架构上 char 的(有效)指针,因此将其 [内容] 表示为const char *.

您可能想要的是将文件的内容加载到内存中,然后将指针(类型为 const char*)存储到给定块的开头。</pedantry> 实现这一目标的一种方法:

#include <sstream>
#include <fstream>
// ...
{
    std::ostringstream sstream;
    std::ifstream fs("test.txt");
    sstream << fs.rdbuf();
    const std::string str(sstream.str());
    const char* ptr = str.c_str();
    // ptr is the pointer we wanted - do note that it's only valid
    // while str is valid (i.e. not after str goes out of scope)
}
于 2010-10-24T21:08:10.987 回答
1

你需要:

  1. 创建一个返回 const char* 的函数
  2. fstream在文件上打开一个
  3. 寻求结束
  4. 通过查看文件位置来确定文件长度 ( tell)
  5. 回到起点
  6. 创建一个 char* 以包含文件内容
  7. 将文件内容读入 char*
  8. 返回 char* 指针,函数 return 添加 const
  9. 文件被 fstream 超出范围自动关闭
于 2010-10-24T20:16:00.683 回答