| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1419 人关注过本帖
标题:请教:编译成功但运行结果不成功呢
取消只看楼主 加入收藏
dubaoshi
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2006-9-22
收藏
 问题点数:0 回复次数:3 
请教:编译成功但运行结果不成功呢
今天按书上的写了个程序,检测所输入的一段文字当中,字母出现的次数,编译成功了,但不能正常运行,表现在输入完一段文字以后,程序在屏幕上输出一次,然后还让继续输入文字~~~死循环了好象。
我检查了半天,也没弄明白怎么回事,请高手指点,谢谢!

程序如下:
#include<iostream.h>
#include<iomanip>
#include<cassert>


class String;//定义新类
istream& operator>>(istream&,String&);
ostream& operator<<(ostream&,const String&);
 //以下为具体定义
class String{
    public:
    String();
    String(const char*);
    String(const String&);
   
    ~String();
   
    String& operator=(const String&);
    String& operator=(const char*);
   
    bool operator==(const String&);
    bool operator==(const char*);
   
    char& operator[](int);
   
    int size(){return _size;}
    char* c_str(){return _string;}
   
    private:
    int _size;
    char* _string;
 };
 //以下为成员函数
 inline String::String()
 {
    _size=0;
    _string=0;
 }
 inline String::String(const char *str)
 {
    if(!str){
        _size=0;_string=0;
    }
    else{
        _size=strlen(str);
        _string=new char[_size+1];
        strcpy(_string,str);
    }
 }
 
 inline String::String(const String &rhs)
 {
    _size=rhs._size;
    if(!rhs._string)
    _string=0;
    else{
        _string=new char[_size+1];
        strcpy(_string,rhs._string);
    }
 }
 
 inline String::~String(){delete[] _string;}
 
 inline String& String::operator=(const char *s)
 {
    if(!s){
        _size=0;
        delete[] _string;
        _string=0;
    }
    else{
        _size=strlen(s);
        delete [] _string;
        _string=new char[_size+1];
        strcpy(_string,s);
    }
    return *this;
 }
 
 inline istream& operator>>(istream &io,String &s)
{
    const int limit_string_size=4096;
    char inBuf[limit_string_size];
   
    io>>setw(limit_string_size)>>inBuf;
    s=inBuf;
   
    return io;
}

inline ostream& operator<<(ostream &os,String &s)
{
    return os<<s.c_str();
}
 
 inline bool String::operator==(const char *s)
 {
    return strcmp(_string,s)?false:true;
 }
 
 inline bool String::operator==(const String &rhs)
 {
    return strcmp(_string,rhs._string)?false:true;
 }
 
 inline char& String::operator[](int elem)
 {
    assert(elem>=0&&elem<_size);
    return _string[elem];
 }
  //以下为主程序
 int main()
 {
    int aCnt=0,eCnt=0,iCnt=0,oCnt=0,uCnt=0,theCnt=0,itCnt=0,wdCnt=0,notVowel=0;
    String buf,the("the"),it("it");
   
    //cin>>buf;
    while(cin>>buf)
        {
        ++wdCnt;
        cout<<buf<<' ';
        if(wdCnt%12==0)
        cout<<endl;
        if(buf==the||buf=="The")
        ++theCnt;
        else
        if(buf==it||buf=="It")
        ++itCnt;
        
        for(int ix=0;ix<buf.size();++ix)
        {
            switch(buf[ix])
            {
                case'a':case'A':++aCnt;break;
                case'3':case'#':++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;
 }

第一次弄这么长的程序,大家鼓励一下吧:)
搜索更多相关主题的帖子: 编译 结果 运行 
2008-05-05 11:18
dubaoshi
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2006-9-22
收藏
得分:0 
哎,还是不行啊~~
谁帮忙调试一下吧。

人行善,福虽未至,祸已远离;人行恶,祸虽未至,福已远离.
2008-05-05 13:34
dubaoshi
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2006-9-22
收藏
得分:0 
我象如下这样用,也会出现死循环的了,如果解决了这个,也就解决了上面的问题。
本例如下:

#include<iostream.h>
#include<string>

void main()
{
    string str;
    while(cin>>str)
    {
         cout<<str<<endl;
    }
}

人行善,福虽未至,祸已远离;人行恶,祸虽未至,福已远离.
2008-05-05 16:26
dubaoshi
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2006-9-22
收藏
得分:0 
PcrazyC是高手,在2楼就我正确答案了~
没想到居然是把循环的位置改一下就成了~~~谢谢~~~

人行善,福虽未至,祸已远离;人行恶,祸虽未至,福已远离.
2008-05-08 08:48
快速回复:请教:编译成功但运行结果不成功呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031816 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved