【问题标题】:ifstreaming a file not working properly. Here is the code如果流式传输文件无法正常工作。这是代码
【发布时间】:2021-03-08 13:13:51
【问题描述】:

在我的程序中,我在 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++11 fstream ifstream


【解决方案1】:

如果您读取文件,则不必指定值之间存在间隙。 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;

【讨论】:

  • 但是我的朋友,名字可以有两个以上的字符串。如何保持检查?
  • 姓名可以有两个以上的字符串如果每个人的项目数都相同,那么您可以使用此方法。如果不是,你不能。我为您提供了有关替代方法的问题的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 2017-02-28
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多