读书人

这是什么情况解决办法

发布时间: 2012-05-13 16:39:43 作者: rapoo

这是什么情况
就是一个cin的问题,为什么看上去cin>>filename 这句像是把空字符传给了filename或者像是
根本没有被执行啊,求教。。


C/C++ code
#include<iostream>#include<fstream>#include<string>#include<vector>using namespace std;int main(){    void save(string ,vector<string>);      void output(vector<string>);          vector<string> svec;            string word;    string filename;        cout<<"initial file name:"<<" "<<filename<<endl;             cout<<"Please input the wordlists"<<endl;        while(cin>>word)        svec.push_back(word);        output(svec);                                           cout<<"wordlist saved to:"<<endl;    [b] cin>>filename;[/b]         cout<<"The filename is "<<filename<<endl;             save(filename,svec);     return 0;}void save(string name,vector<string> svec){   ofstream save(name,ios::out);   for(vector<string>::size_type i =0;i!=svec.size();i++)   {     if(i%5==0&&i>4)        save<<"\n"<<svec[i]<<" ";      else        save<<svec[i]<<" ";    }    cout<<"wordlist saved to  "<<name<<endl;    } void output(vector<string> svec)  {   cout<<"The word list:"<<endl;   for(vector<string>::size_type i=0;i!=svec.size();i++)   {          if(i%2==1)        cout<<svec[i]<<endl;      else         cout<<svec[i]<<" ";    } }   


[解决办法]
cin.clear()才行,因为while那里把它搞成EOF了。
[解决办法]
输入字符串,当结束输入的时候用Ctrl+z结束。然后输入文件名保存。VS2008下测试通过。如果用其他的请相应的修改下吧!
C/C++ code
int main(){    void save(string ,vector<string>);      void output(vector<string>);          vector<string> svec;    string word;    string filename;    cout<<"initial file name:"<<" "<<filename<<endl;         cout<<"Please input the wordlists"<<endl;    while(cin>>word)        svec.push_back(word);    output(svec);                                   cout<<"wordlist saved to:"<<endl;    cin.clear();    cin.sync();    cin>>filename;     cout<<"The filename is "<<filename<<endl;    save(filename,svec);    return 0;}void save(string name,vector<string> svec){    ofstream save(name.c_str(),ios::out);    for(vector<string>::size_type i =0;i!=svec.size();i++)    {        if(i%5==0&&i>4)            save<<"\n"<<svec[i]<<" ";        else            save<<svec[i]<<" ";    }    cout<<"wordlist saved to  "<<name<<endl;}void output(vector<string> svec){    cout<<"The word list:"<<endl;    for(vector<string>::size_type i=0;i!=svec.size();i++)    {            if(i%2==1)            cout<<svec[i]<<endl;        else             cout<<svec[i]<<" ";    }} 

读书人网 >C++

热点推荐