可视C++ - 无法打开文本文件
Visual C++ - Cannot open text file
打开文件并读取其内容的简单程序。然后在最后进行测试,看看我是否真的得到了信息。每次我运行它时,它都会告诉我它无法打开文件。我将在下面发布销售单的内容。为什么不打开文件?它还尝试在每次运行时删除该文件。
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
struct SaleSlip{
char name[20];
int prodID;
double value;
};
void main(){
fstream slips;
SaleSlip sales[17];
slips.open("SaleSlips.txt", ios::in);
if(slips.eof()){
cout << "Cannot open file - SaleSlips.txt"<< endl;
system("pause");
exit(2);
}
int i = 0;
while(!slips.eof()){
slips.getline(sales[i].name, ' ');
slips >> sales[i].prodID;
slips.ignore(5, ' ');
slips >> sales[i].value;
slips.ignore(80, ' ');
i++;
}
cout << sales[1].value;
slips.close();
system("pause");
}
Eric 1 200000.00
Sookie 2 200.00
Sookie 4 200.50
您使用
ios::out
在输出模式下打开流。 使用ios::in
从中读取。
你还有很多其他问题。 即:
-文件打开后的if(!slips.eof())
将始终导致退出,除非文件为空。
-在您的 while 循环中,您(可能不小心(尝试使用 <<
将 prodID 和值写入 slips 文件中。 使用 >>
从流中读取,<<
写入流。
您有两个问题:
您正在打开文件进行输出(写入(
slips.open("SaleSlips.txt", ios::out);
改用ios::in
进行输入(读取(
slips.open("SaleSlips.txt", ios::in);
接下来,您立即测试!eof()
,这是错误的逻辑。
if(!slips.eof())
您不想在打开文件进行输入时处于eof()
状态。 eof()
end of file
.首次打开文件进行输入时,您希望位于文件的开头;eof()
是一件坏事。如果eof()
为真,则代码应该出错,而不是如果为假:
if(slips.eof()) {
// It's an error if we're starting at eof()
}
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入