| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 345 人关注过本帖
标题:求大神指点我的代码错在哪,感谢!
只看楼主 加入收藏
Hee麦
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-8-3
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:6 
求大神指点我的代码错在哪,感谢!
这个是我做C++PrimerPlus(第五版)第9章的第2道编程题的代码

#include <iostream>
#include <string>

void strcount(string s);

int main()
{
    using namespace std;
    string str;

    cout<<"Enter a line: \n";
    getline(cin,str);
    while(cin)
    {
        strcount(str);
        cout<<"Enter next line (empty line to quit): \n";
        getline(cin,str);
    }
    cout<<"Bye\n";
    return 0;
}

void strcount(string s)
{
    using namespace std;
    static int total=0;
    int count=s.size();
    total+=count;

    cout<<"\""<<s<<"\" contains "<<count<<" characters\n";
    cout<<total<<" characters total\n";
}

图片附件: 游客没有浏览图片的权限,请 登录注册


搜索更多相关主题的帖子: void include return Enter 
2012-12-27 13:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <iostream>
#include <string>

void strcount( std::string s );

int main()
{
    using namespace std;

    cout<<"Enter a line: \n";
    for( string str; getline(cin,str); )
    {
        strcount(str);
        cout<<"Enter next line (empty line to quit): \n";
    }
    cout << "Bye" << endl;

    return 0;
}

void strcount( std::string s )
{
    using namespace std;

    static size_t total = 0;
    size_t count = s.size();
    total += count;

    cout<<"\""<<s<<"\" contains "<<count<<" characters\n";
    cout<<total<<" characters total\n";
}
2012-12-27 14:05
Hee麦
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-8-3
收藏
得分:0 
回复 2楼 rjsp
没能实现空行就结束程序这个功能 请问怎么修改可以实现?
2012-12-27 15:30
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用Hee麦在2012-12-27 15:30:13的发言:

没能实现空行就结束程序这个功能 请问怎么修改可以实现?

for( string str; getline(cin,str); )
改为
for( string str; getline(cin,str) && !str.empty(); )
试试
2012-12-27 15:59
manylong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-27
收藏
得分:0 
学习ing
2012-12-27 16:29
Hee麦
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-8-3
收藏
得分:0 
回复 4楼 rjsp
谢谢,可以实现了,不过有个问题是getline()函数会保留回车符,下次读取先读取了回车符
图片附件: 游客没有浏览图片的权限,请 登录注册


我就在for()中加了一句cin.get(),即改为
for( string str; getline(cin,str) && !str.empty(); cin.get())
运行结果是:
图片附件: 游客没有浏览图片的权限,请 登录注册


就是说输入字符串后 要按2次回车它才显示下一句,
图片附件: 游客没有浏览图片的权限,请 登录注册

怎么解决这个问题,还是说这是VC6版本的bug,其他版本没问题?
2012-12-27 17:59
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
回复 6楼 Hee麦
你还是换个编译器吧
2012-12-28 08:43
快速回复:求大神指点我的代码错在哪,感谢!
数据加载中...
 
   



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

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