读取文件的 C++ 程序
c++ program reading a file
我的代码:
void load_books(){
ifstream myfile(path, ios::in);
if (myfile.fail()){
cout << "coudln't open file" << "nn";
}
else{
while (myfile){
myfile >> book1[i].id >> book1[i].title >> book1[i].p_name >> book1[i].p_address >> book1[i].aut_name;
myfile >> book1[i].aut_nationality >> book1[i].date >> book1[i].status;
cout << book1[i].id << " " << book1[i].title << " " << book1[i].p_name << " " << book1[i].p_address << " " << book1[i].aut_name;
cout << " " << book1[i].aut_nationality << " " << book1[i].date << " " << book1[i].status << endl;
i++;
}
myfile.close();
}
}
它应该输出文件包含的内容,但我在命令中得到这个
111 艾哈迈德·优素福 哈哈 不 是 哈立德 15
222 ADAS ASD SDT huy mjmj mjg2 20
00
前两行是正确的,但我不知道为什么它输出最后 2 个零 (0 0)
充实@Bo的答案,并回答您的评论:
以及我如何在每次尝试输入后检查 myfile 的状态??!
您可以像这样修复循环:
void load_books(){
ifstream myfile(path);
if (myfile.fail()){
cout << "coudln't open file" << "nn";
}
else{
while (myfile >> book1[i].id >> book1[i].title >> book1[i].p_name
>> book1[i].p_address >> book1[i].aut_name
>> book1[i].aut_nationality >> book1[i].date >> book1[i].status){
cout << book1[i].id << " " << book1[i].title << " " << book1[i].p_name << " "
<< book1[i].p_address << " " << book1[i].aut_name << " "
<< book1[i].aut_nationality << " " << book1[i].date << " "
<< book1[i].status << endl;
i++;
}
}
}
由于std:istream& operator>>(std:istream&, T&)
的链式调用返回当前std:istream&
引用,因此while()
循环中的条件可以解析为std::basic_ios::operator bool
,并且一旦运算符计算到false
,循环就会结束。
相关参考文档:operator>>(std::basic_istream)
std::basic_ios::operator bool
条件 while(myfile)
仅在某些输入失败后停止。
此时,您已经打印了该输入尝试的零。
您必须在每次尝试输入后检查myfile
的状态,以查看它是否成功。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在C应用程序中运行C++(带有STL)函数
- 使用mongocxx驱动程序时包含头文件问题
- 如何在c++程序中找到函数的地址