这是与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;
}
答案 0 :(得分:1)
从功能描述
basic_istream<charT,traits>& get(char_type* s, streamsize n,
char_type delim );
在C ++标准中:
提取并存储字符,直到出现以下任何一种情况: ...
- traits :: eq(c,delim)表示下一个可用的输入字符c( in 哪个案例c未被提取)。
从功能描述
basic_istream<charT,traits>& get(char_type* s, streamsize n);
效果:调用get(s,n,widen('\ n'))
因此这个电话
cin.get(ch);
用于从输入缓冲区中提取新行字符。否则下一次调用函数
cin.get(name,30);
将读取一个空字符串。
而不是电话
cin.get(ch);
您可以使用成员函数ignore