输出文本文件数据到字符数组

C++ Output text file data to char array

本文关键字:字符 数组 数据 文本 文件 输出      更新时间:2023-10-16

简单地说,我需要一个程序来读取文本文件并将文本文件中的所有数据放入数组中。

我知道你可以用

输出/读取一个文本文件
// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () 
{
  string line;
  ifstream myfile ("numbers.txt");
  if (myfile.is_open())
  {
    while (! myfile.eof() )
    {
      getline (myfile,line);
      cout << line << endl;
    }
    myfile.close();
  }
  else cout << "Unable to open file"; 
  return 0;
}

然而,我需要的是可以接受文本文件的东西…

交货:Answers.txt

A
B
C
C
D
B
A
B

并将数据输出到数组。

最终结果应该类似....

char answers[] = [A, B, C, C, D, B, A, B];

感谢所有的帮助!

您可以使用矢量来添加您的行。

// reading a text file
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int main () 
{
  string line;
  vector<string> lines;
  ifstream myfile ("numbers.txt");
  if (myfile.is_open())
  {
    while (! myfile.eof() )
    {
      getline (myfile,line);
      lines.push_back(line);
    }
    myfile.close();
  }
  else cout << "Unable to open file"; 
  for (unsigned i = 0; i < lines.size(); ++i)
    cout << lines[i] << endl;
  return 0;
}

如果你想了解更多关于vector的信息:

http://en.cppreference.com/w/cpp/container/vectorhttp://www.cplusplus.com/reference/vector/vector/?kw=vector

编辑:好的,如果我没理解错的话,你需要这个:

// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () 
{
  string line;
  string file;
  char *str;
  ifstream myfile ("numbers.txt");
  if (myfile.is_open())
  {
    while (! myfile.eof() )
    {
      getline (myfile,line);
      file += line; // Concatenate every lines
    }
    myfile.close();
  }
  else cout << "Unable to open file"; 
  str = file.c_str(); // str contain the file as an array of char, without the newline char
  return 0;
}

你需要:

  1. 使用new[]获取与文件
  2. 相同大小的缓冲区
  3. 然后read这些文件内容到缓冲区
  4. 使用数据
  5. 不要忘记delete[]缓冲。

如果你不想处理手动内存分配和C数组?使用getline()并将其存储在std::string中。不需要newdelete,只要使用std::string::data()来获得指向char数组的指针,如果你需要它。

这听起来像个家庭作业问题

这是我发现的简单方法....

const int size = 20;
char correctAnswers[size];
ifstream correctAnswersFile;
correctAnswersFile.open("CorrectAnswers.txt");
for (int i = 0; i < size; i++) {
    correctAnswersFile >> correctAnswers[i];
    cout << correctAnswers[i] << endl;
}