none
还是字符串的问题 RRS feed

  • 问题

  • #include  <iostream>
    using namespace std;
    #include <fstream>
    #include "myString.h"

     

    int main()
    { int acnt=0,ecnt=0,icnt=0,ocnt=0,ucnt=0,
      thecnt=0,itcnt=0,wdcnt=0,notvowel=0,cb;
      myString buf, the("the"),it("it");
      myString bu("i am a good person,you are a black dog");

      while (cin>>buf){
       ++wdcnt;
       cout<<buf<<wdcnt<<' ';
       if (wdcnt % 12 ==0)
        cout<<endl;
       if (buf==the||buf=="The")
        ++thecnt;
       else
        if (buf==it||buf=="It")
         ++itcnt;
       cb=bu.size();
       cout<<cb;
       for (int ix=0; ix <buf.size();++ix)
       {
        switch (buf[ix])
       {case 'a': case 'A': ++acnt;break;
       case 'e': case 'E': ++ecnt;break;
       case 'i': case 'I': ++icnt;break;
       case 'o': case 'O': ++ocnt;break;
       case 'u': case 'U': ++ucnt;break;
       default: ++notvowel;break;
       }
       }
      }
      cout<<"\n\n"
       <<"words read:"<<wdcnt<<"\n\n"
       <<"the/The:"<<thecnt<<'\n'
       <<"it/It:"<<itcnt<<"\n\n"
       <<"non-vowels read:"<<notvowel<<"\n\n"
       <<"a:"<< acnt<<'\n'
       <<"e:"<< ecnt<<'\n'
       <<"i:"<< icnt<<'\n'
       <<"o:"<< ocnt<<'\n'
       <<"u:"<< ucnt<<endl;


     return 0;
      

    }
    我又来提问了,很感谢帮助我解决前面问题的大虾们,此次我又来提问个弱弱的问题,上面的程序是从终端输入字符串,然后顺序访问,并记录出现的元音字母,myString是我学着书本做的string类,经过在这里请教和努力,现在编译都没问题了,现在的问题是我从终端输入字符串,似乎是个死程序,永远都不结束,不执行FOR语句都,但是我不从终端输入,直接在此程序中写个字符串,执行没问题,请指教啊,我从网上搜索,查找,但还是解决不了.

    2009年12月17日 9:39

答案

  • while (cin>>buf) 这么写当然程序不会结束啦。如果不是buf 的那块内存坏了,cin>>buf 应该永远是真吧。 再说cin 往最最根儿里说,应该是调用了操作系统的INT中断的。不执行下面的代码,也很正常啊。

    你while循环的条件不对,改掉就好了。
    • 已标记为答案 小龙123 2009年12月18日 1:21
    2009年12月17日 10:08
    版主

全部回复

  • while (cin>>buf) 这么写当然程序不会结束啦。如果不是buf 的那块内存坏了,cin>>buf 应该永远是真吧。 再说cin 往最最根儿里说,应该是调用了操作系统的INT中断的。不执行下面的代码,也很正常啊。

    你while循环的条件不对,改掉就好了。
    • 已标记为答案 小龙123 2009年12月18日 1:21
    2009年12月17日 10:08
    版主
  • 终于知道了,谢谢Michael Lee2啊,整这个真不容易啊,花了两天的时间了,谢谢!
    2009年12月18日 2:13