将";"分隔的文件读入字符数组结构
Reading a ";" delimited file into a character array structure
我正试图将一组值从文本文件读取到数组结构的数组中。每个条目由一个"\n"分隔,每个条目由3个值组成,用一个";"分隔。
问题是,在正确读取第一行文件数据后,程序从第二行读取第一个值,然后似乎无法读取其余值。你能指出我语法或逻辑上的错误吗?
测试数据显示在下面。
CS162;Finish Lab 2;9/26/2009
CS201;Take Quiz 1;9/28/2009
在读取测试数据后,我的程序输出如下。
Your tasks are:
Finish Lab 2 for CS162 is due 9/26/2009
CS201
for is due
将文件读入数组并输出数组内容的循环如下。我的完整代码将在问题的末尾。
for ( ; InputFile.peek() != EOF; ListSize++ )
{
InputFile.get(TaskList[ListSize].Course, BUFFERSIZE, ';');
InputFile.ignore(BUFFERSIZE, ';');
InputFile.get(TaskList[ListSize].Assignment, BUFFERSIZE, ';');
InputFile.ignore(BUFFERSIZE, ';');
InputFile.get(TaskList[ListSize].DueDate, BUFFERSIZE, ';');
InputFile.ignore(BUFFERSIZE, 'n');
}
cout << "Your tasks are:" << endl;
for ( int Iteration = 0; Iteration <= ListSize; Iteration++ )
{
cout << TaskList[Iteration].Assignment << " for " << TaskList[Iteration].Course << " is due " << TaskList[Iteration].DueDate << endl;
}
完全公开,这是为计算机科学课。这就是为什么我不要求完整的代码解决方案,只是帮助解决逻辑或语法错误。如果我做这件事的方式完全错误,请给我一些文档来帮助我。但这确实会限制我的代码。程序必须使用字符数组,而不是字符串。
也许最后一个get应该是:
InputFile.get(TaskList[ListSize].DueDate, BUFFERSIZE, 'n');
而不是
InputFile.get(TaskList[ListSize].DueDate, BUFFERSIZE, ';');
您的最后一个字段(截止日期)末尾没有分号,只有换行符。
更新:我建议您也考虑使用getline
而不是get
。它们有类似的功能,但getline也会使用分隔符,这意味着您不需要使用ignore()。
不用考虑您编写的代码,我只想说我处理这类问题的正常模式是:
while(readline){processline;}
如果您没有完全正确地处理所有内容,增量文件处理更有可能遇到问题。
相关文章:
- 将字符数组转换为时间结构
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- C++具有动态分配的字符数组的结构
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- 损坏的结构字符数组 - sqlite C++
- 结构 init:字符**类型的标量初始值设定项两边的大括号
- 如何为结构字段动态分配字符空间
- 如何将字符串字符与结构数组进行比较?
- 如何将可变大小的结构转换为字符数组
- C++ - 使用结构数据类型将单词中的单个小写字符更改为大写,反之亦然
- 在结构数据类型中更改每个字符的 ASCII 值
- C++结构字符数组初始化
- 为什么我不能从结构将数据输入到字符数组中?
- 快速将无符号字符的向量强制转换为POD结构的向量,反之亦然
- 将结构写入二进制文件后,该文件仍然具有正常字符,而不是不可读字符
- 是否可以将无符号字符数组reinterpret_cast到仅包含C++中无符号字符成员的结构指针
- 在 c++ 中将结构类型转换为无符号字符*
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- 在结构之间复制字符数据
- 将 C++ 字符结构与 ASCII 值进行比较会产生错误