c++中按字符读取输入文件时出现断行
Line Breaks when reading an input file by character in C++
先说一下,这是家庭作业,但还有一周才交,我不太确定作业的最终细节。长话短说,由于不知道他会在课堂上介绍什么概念,我决定试一试这个作业,但是我遇到了一个问题。我需要做的部分作业是从输入文件中读取单个字符,然后,给定字符在其包含的单词中的位置,在屏幕上重复该字符。我遇到的问题是,文本文件中的单词是单个单词,每个单词在文件的不同行上。因为我不确定我们是否会在这个任务中使用<string>
,我想知道是否有任何方法可以在不使用<string>
的情况下识别行尾。
现在,我使用一个简单的ifstream fin;
拉出字符。我就是不知道怎么让它识别一个单词的结尾和另一个单词的开头。为了包含代码,下面是到目前为止我得到的所有内容。我希望它能显示某种endl
字符,但是它只是打印出所有的单词一起运行的样式。
ifstream fin;
char charIn;
fin.open("Animals.dat");
fin >> charIn;
while(!fin.eof()){
cout << charIn;
fin >> charIn;
}
我最初忘记包括的一些事情:
我必须在每个字符输入时处理它(打印它的循环需要在我读取下一个字符并增加计数器之前运行)。此外,"Animals.dat"中的单词长度各不相同,这使我无法设置迭代次数。我们也没有涉及fin.get()或。getline(),所以它们也是禁止使用的。
老实说,我无法想象这是不可能的,但考虑到这些限制,如果是的话,我也不会太难过。
为什么不使用字符数组呢?你可以这样做:
#define MAX_WORD_NUM 20
#define MAX_STR_LEN 40 //I think 40 is big enough to hold one word.
char words[MAX_WROD_NUM][MAX_STR_LEN];
然后你可以在单词中输入一个单词。
cin >> words[i];
>>
运算符忽略空格,因此您永远不会得到换行符。即使不允许使用<string>
类,也可以使用c-string(字符数组):
ifstream fin;
char animal[64];
fin.open("Animals.dat");
while(fin >> animal) {
cout << animal << endl;
}
当从c-string中读取字符时(也就是上面的animal
),最后一个字符总是0,有时表示' '或NULL
。这是在遍历单词中的字符时要检查的内容。例如:
c = animal[0];
for(int i = 1; c != 0 && i < 64; i++)
{
// do something with c
c = animal[i];
}
- C++文本文件输入
- C++ 中文件输入输出中的长长 v/s int
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- 用空格填充 2D 数组(从文件输入)
- 流对象来表示文件输入,然后是标准输入?
- 用精神解析文件输入
- 从文件输入和输出
- 来自文本文件输入 c++ 的向量
- 如何通过键盘或分数文件输入分数
- 了解文件输入和输出,我可以写入文件,但无法从文件打印
- 词频程序 - 文件输入太大?
- 尝试从 csv 文件输入大量数据时出错
- 如何将文件从文件输入到C 中的矩阵中
- 如何从Windows CMD运行可执行文件并将其传递给文件输入的参数参数和重定向
- 如何解析文本文件并使用构造函数中的文件输入来创建对象的容器
- 这是读取文件输入的正确方法吗?
- 如何在 c++ 中使用二进制文件输入/输出读取/写入结构的字符串类型成员
- 如何创建一个具有空值、递减编号系统和.txt文件输入值的二维阵列网格
- C 文件输入流循环问题
- 使用对输入整数的文件输入