ofstream空白文件输出C ++

问题描述

所以我试图从文本文件中读取一些数据,然后将该数据保存在结构中,然后将该数据输出到另一个具有不同名称的文本文件中。我的问题是输出文件为空,还尝试放置一些 cout 来查看代码是否正常运行,但没有输出到控制台。我认为这与 ofstream 有关,因为当我尝试确定问题时,我删除了与 ofstream 有关的所有行,并将读取的数据输出到控制台,它可以正常工作。我希望以西班牙语编写代码,希望没有问题,这是代码:

#include <iostream>
#include <iomanip>
#include <fstream>
#include <stdio.h>
#include <string>
using namespace std;
typedef char str20[20];
struct sPaises {
    str20 nom,cont;
    int hab;
};
bool abrirArchivos(ifstream &archE,sPaises &rPais){
    archE >> rPais.nom;
    archE >> rPais.cont;
    archE >> rPais.hab;
    return archE.good();
}
int main(){
    sPaises rPaises;
    ifstream paisesE("paises.txt");
    ofstream lstPaises("ListadoPaises.txt");
    while (abrirArchivos(paisesE,rPaises) == 1){
        lstPaises << rPaises.nom << rPaises.cont << rPaises.hab << endl;
    }
    cout << paisesE.good() << endl;
    cout << lstPaises.good() << endl;
    paisesE.close();
    lstPaises.close();
return 0;
}

这是与控制台输出配合使用的代码:

#include <iostream>
#include <iomanip>
#include <fstream>
#include <stdio.h>
#include <string>
using namespace std;
typedef char str20[21];
struct sPaises {
    str20 nom,sPaises &rPais){
    archE >> rPais.nom;
    archE >> rPais.cont;
    archE >> rPais.hab;
    return archE.good();
}
int main(){
    sPaises rPaises;
    ifstream paisesE("paises.txt");
    //ofstream lstPaises("ListadoPaises.txt");
    while (abrirArchivos(paisesE,rPaises) == 1){
        paisesE.clear();
        cout << rPaises.nom << rPaises.cont << rPaises.hab << endl;
    }
    cout << paisesE.good() << endl;
    //cout << lstPaises.good() << endl;
    paisesE.close();
    //lstPaises.close();
return 0;
}

如您所见,它们几乎是相同的,不同之处在于 paisesE.clear(); 行和与ofstream相关的行均已注释。

我尝试输入的文本文件示例:

Alemania            Europa       82605000  
Argentina           América      43823000  
Brasil              América     207012000  
Canadá              América      36477000  
China               Asia       1380996000  

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)