C ++将文本文件数据输出到char数组

时间:2016-10-30 22:22:17

标签: c++ arrays input text-files

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

我知道您可以使用

输出/读取文本文件
// 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;
}

我需要的是可以采用文本文件的内容......

EX: Answers.txt

A
B
C
C
D
B
A
B

并将数据输出到数组。

最终结果应该像....

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您可以使用矢量添加线条。

// 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;
}

如果你想在矢量上有更多的信息:

http://en.cppreference.com/w/cpp/container/vector http://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 :(得分:0)

你需要:

  1. 使用new[]获取与文件
  2. 相同大小的缓冲区
  3. 然后将read个文件内容放入该缓冲区
  4. 使用数据
  5. 不要忘记delete[]缓冲区。
  6. 如果您不想处理手动内存分配和C阵列?使用getline()并将其存储在std::string中。不需要newdelete,只需使用std::string::data()获取指向char数组的指针,如果您需要它。

    这有点像家庭作业问题。

答案 2 :(得分:0)

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

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;
}