首页 > 解决方案 > 如果流式传输文件无法正常工作。这是代码

问题描述

在我的程序中,我在 ofstream 的帮助下将用户提供的数据存储在 .txt 文件中。我正在使用 setw() 来确保输入的数据之间有适当的间隙,并且我将用户的数据存储在一行中。这是代码:

string n,mn,fn;
int a;
cout<<"Enter your full name: ";
getline(cin, n);
cin.ignore();
cout<<"Father name: ";
getline(cin, fn);
cin.ignore();
cout<<"Mother name: ";
getline(cin, mn);
cin.ignore();
cout<<"Enter your age: ";
cin>>a;
ofstream file("my.txt",ios::app);
file<<left<<setw(50)<<n<<setw(50)<<a<<setw(50)<<fn<<setw(50)<<mn<<endl;
file.close();

我的 .txt 文件以适当的间距正确保存数据:

parth kumar        12         jack worn        juli zeel
standly duke       19         shane roger      zoya khan

现在我想在我的同一个程序中流式传输这些数据。我将以下代码仅写入 ifstream 第一行。这是代码:

string fn,mn,n;
int a;
ifstream file("my.txt");
file>>left>>setw(50)>>n;
file>>setw(50)>>a;
file>>setw(50)>>fn;
file>>setw(50)>>mn
cout<<n<<"   "<<a<<"    "<<fn<<"    "<<mn;

此代码没有给出预期的结果。我只是想流式传输第一行内容。有可能吗?或者我应该将每组数据存储在不同的文件中(比如名字在一个,年龄在一个,父亲名字在一个,母亲名字在另一个)。你能帮我吗?

标签: c++c++11fstreamifstream

解决方案


如果您读取文件,则不必指定值之间存在间隙。Fstream 为您完成。任何有空格的地方都不会读作一个,例如父亲的名字杰克。它只会读杰克。Fstream 阅读内置了以空格分隔的阅读。因此,您必须以不同的变量读取父亲的姓名和姓氏,母亲也是如此。我没有测试这段代码。这是基于我的一般知识,所以它可能不是真的。

string fn,fsn,mn,msn,n;
int a;
ifstream file("my.txt");
file >>n;       // Name
file >> a;      // Age
file >> fn;     // Father's name
file >> fsn;    // Father's surname
file >> mn;     // Mother's name
file >> msn;    // Mother's surname
cout << n << "   " << a << "    " << fn << ' ' << fsn <<"    " << mn << ' ' << msn;

推荐阅读