c++ fstream的问题

voidopenfile(fstream&file,string&files){file.close();file.clear();file.open(files.c_s... void openfile(fstream &file,string &files){
file.close();
file.clear();
file.open(files.c_str(),fstream::out | fstream::app);
}
int main(){
cout << "input you want open file path:" << flush;
fstream f;
string s,c;
cin >> s;
openfile(f,s);
cout << "input you want save data:" << flush;
cin.clear();
getline(cin,c);
f << c;
cout << endl;
f.close();
f.clear();
f.open(s.c_str());
while(f >> s){
cout << s << " " << flush;
}
f.close();
f.clear();
}
这个程序为何运行到getline的时候就直接跳过去了?求高人指点。。
展开
 我来答
温情时光剪影
2012-09-14 · TA获得超过1634个赞
知道小有建树答主
回答量:607
采纳率:33%
帮助的人:228万
展开全部
什么叫跳过去了?getline ( istream&is , string& str);是将输入流is中读到的字符存入str中。
而你的语句
cout << "input you want save data:" << flush;
cin.clear();
getline(cin,c);
并没有再次调用cin来读入,当然直接向下执行啦。
注意:getline是从你已经读入的缓冲区取字符,而不是捕获屏幕的输入
更多追问追答
追问
那请问如何再让getline能捕获到字符串?
追答
cout > s;
getline(cin,c);
你试试看
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式