我正在为学校做项目,我需要从文件中读取文字。
听起来很容易,除了我的教授对项目施加了限制:没有字符串 (“不允许使用字符串数据类型或字符串库。”)
我一直在使用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和字符串(不是字符数组)。
感谢任何帮助!
答案 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]);
}
}