【发布时间】:2017-08-17 17:05:53
【问题描述】:
这是与file handling 相关的问题,我们将数据输入文件然后显示其内容。我无法理解cin.get(ch); 行如何帮助输出。我发现如果我从代码中删除这一行,程序将无法在第二次迭代中获取变量标记的输入。为什么会这样?我对get() 的工作有点困惑。我的代码:
#include<iostream>
#include<conio>
#include<fstream>
int main()
{
ofstream fout;
fout.open("student",ios::out);
char name[30],ch;
float marks=0.0;
for(int i=0;i<5;i++)
{
cout<<"Student "<<(i+1)<<":\t Name:";
cin.get(name,30);
cout<<"\t\t Marks: ";
cin>>marks;
cin.get(ch); **// the confusion is in this line**
fout<<name<<"\n"<<marks<<"\n";
}
fout.close();
ifstream fin;
fin.open("student",ios::in);
fin.seekg(0);
cout<<"\n";
for(i=0;i<5;i++)
{
fin.get(name,30);
fin.get(ch);
fin>>marks;
fin.get(ch);
cout<<"Student Name: "<<name;
cout<<"\t Marks: "<<marks<<"\n";
}
fin.close();
return 0;
}
【问题讨论】:
-
也许可以在前一个输入之后读取输入缓冲区中的换行符?
-
输入的样子如何?
-
使用
std::string,然后像往常一样从流中读取cin >> name。cin.get(ch)的目的到底是什么?请提供输入和预期输出。 -
@AndyG 这是他问题的一部分,他不明白为什么需要/使用
cin.get(ch)/ -
如果混合 cin.get() 和 cin >> 程序将跳过 cin.get 放置在 cin >> 之后。由于 cin.get()s 正在检测 '\n'。编辑:您需要将 cin.ignore() 添加到相关位置以使其工作。还可以了解 cin.get 是为了展示您的努力和进行研究。
标签: c++ file get file-handling read-write