回 帖 发 新 帖 刷新版面

主题:高手请进

#include<iostream>
#include<string>
#include<cctype>

using namespace std;
bool is_or_fuhao(const string s){
    char ch;
    for(string::size_type index=0;index!=s.size();index++)
    {
        ch=s[index];
        if(ispunct(ch))
            return true;
    }
    return false;
}

string del_symbol(string s){
string s1;
char ch;
for(string::size_type index=0;index!=s.size();index++){
    ch=s[index];
        if(!ispunct(ch))
        s1+=ch;
}
        return s1;
}

int main(){
string s,s1;
    while(cin>>s){
        if(    is_or_fuhao(s)){
            
            s1=del_symbol(s);
            cout<<s1<<endl;
        }
        else
        {   cout<<"please input a string again,y or n"<<endl;
           char ch;
           ch=getchar();
           if(ch=='y')
           {
              continue;
           }
           else
              return -1;
        }
    }
    return 0;
}
这个程序,当我输入yin.txt时它就显示了yintxt,然后我再按任意键它就退出了,为什么?我的用意是可以进行n次操作的,即第一次完成后,如果我再输入数,如果数不符合要求,我按y又可以重新输入。请问高手这个程序错哪了。

回复列表 (共1个回复)

沙发

ch=getchar();
写2遍就OK,第一次读入的是一个回车符,第二次才会去读你输入的y,否则每次进入到else后都会走return -1;
建议你用字符串输入,这样可以避免啊。。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册