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的时候就直接跳过去了?求高人指点。。 展开
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的时候就直接跳过去了?求高人指点。。 展开
1个回答
展开全部
什么叫跳过去了?getline ( istream&is , string& str);是将输入流is中读到的字符存入str中。
而你的语句
cout << "input you want save data:" << flush;
cin.clear();
getline(cin,c);
并没有再次调用cin来读入,当然直接向下执行啦。
注意:getline是从你已经读入的缓冲区取字符,而不是捕获屏幕的输入
而你的语句
cout << "input you want save data:" << flush;
cin.clear();
getline(cin,c);
并没有再次调用cin来读入,当然直接向下执行啦。
注意:getline是从你已经读入的缓冲区取字符,而不是捕获屏幕的输入
更多追问追答
追问
那请问如何再让getline能捕获到字符串?
追答
cout > s;
getline(cin,c);
你试试看
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询