如何使用c-strings读取.txt文件?

时间:2016-09-08 01:19:55

标签: c++ arrays char fstream ifstream

我正在为学校做项目,我需要从文件中读取文字。

听起来很容易,除了我的教授对项目施加了限制:没有字符串 (“不允许使用字符串数据类型或字符串库。”)

我一直在使用char数组解决这个问题;但是,我不确定如何使用char数组从文件读入。

这是来自其他网站的示例,关于如何使用字符串读取文件

// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string line;
  ifstream myfile ("example.txt");
  if (myfile.is_open())
  {
    while ( getline (myfile,line) )
    {
      cout << line << '\n';
    }
    myfile.close();
  }

  else cout << "Unable to open file"; 

  return 0;
}

这里重要的一行是while ( getline (myfile,line) );

getline接受ifstream和字符串(不是字符数组)。

感谢任何帮助!

3 个答案:

答案 0 :(得分:4)

使用cin.getline。请参阅此网站,格式为:cin.getline

你可以这样写:

ifstream x("example.txt");
char arr[105];
while (x.getline(arr,100,'\n')){
    cout << arr << '\n';
}

答案 1 :(得分:1)

ifstream有一个名为get()的方法,它将文件内容读入char数组。 get()作为参数获取指向数组的指针和数组的大小;然后,如果可能的话,将数组填充到给定的大小。

get()返回后,使用gcount()方法确定已读取的字符数。

您可以使用then和一个简单的逻辑循环,以size - 块的形式重复读取文件内容到一个数组中,并将所有读取的块收集到一个数组中,或者{ {1}}。

答案 2 :(得分:0)

您可以使用int i = 0; while (scanf("%c", &str[i ++]) != EOF)来判断文本输入的结束。 str是char数组包含你想要的换行符,i是输入大小。

您还可以使用while(cin.getline())以C ++样式的每个循环读取每行: istream& getline (char* s, streamsize n, char delim );如下所示:

const int SIZE = 100;
const int MSIZE = 100;
int main() {
    freopen("in.txt", "r", stdin);
    char str[SIZE][MSIZE];
    int i = -1;
    while (cin.getline(str[++ i], MSIZE)) {
        printf("input string is [%s]\n", str[i]);
    }    
}