ifstreaming 文件无法正常工作。这是代码

ifstreaming a file not working properly. Here is the code

在我的程序中,我在 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。我只在第一行将以下代码写入 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;

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

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

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;