| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1549 人关注过本帖
标题:大家帮忙看看,关于String类型的代码。哈哈,版主再请进、
只看楼主 加入收藏
lerncav
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-7-26
结帖率:0
收藏
已结贴  问题点数:10 回复次数:16 
大家帮忙看看,关于String类型的代码。哈哈,版主再请进、
程序代码:
#include<iostream>
#include<string>
#include<cctype>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using string::size_type;
int main()
{
    string user;
    cout<<"Input a sentence, Spaces into ^"<<endl<<endl;
    cin>>user;
    user[0]=toupper(user[0]);
    for (size_type sign=1;sign!=user.size();++sign)
    {
        if((user[sign] == '.') || (user[sign] == '?') || (user[sign] == '!')|| (user[sign] == ';'))
        {
            user[sign + 1] = toupper(user[sign + 1]);
        }
        if(user[sign]=='^')
        {
            user[sign]=' ';
        }
    }
    cout<<endl<<user<<endl<<endl;
    return 0;
}


[ 本帖最后由 lerncav 于 2010-8-16 20:24 编辑 ]
搜索更多相关主题的帖子: String 版主 类型 代码 
2010-08-16 14:53
幽园香客
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:231
专家分:142
注 册:2006-2-27
收藏
得分:1 
以下是引用lerncav在2010-8-16 14:53:24的发言:

#include<iostream>
#include<string>
#include<cctype>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using string::size_type;
int main()
{
    string user;
    cin>>user;
    user[0]=toupper(user[0]);//把句子的第一个字母变成大写   
    for (size_type sign=1;sign!=user.size();++sign)
    {
        if(ispunct(sign))//如果遇到标点符号
        {
            switch(sign)
            {
            case '.'&&'!'&&'?'://如果标点符号是"."或"!"或"?",将标点符号后一位的字母变成大写
                             //仔细看看你的条件吧?能否改成:   case '.':
                                                                                 case '!':
                                                                                 case '?':
                size_type signA;
                signA=user[sign+1];
                user[signA]=toupper(user[signA]);
                break;
            default:
                break;
            }
        }
    }
    cout<<user<<endl;
    return 0;
}
比如我输入“the.the.”
运行后结果是“The.the.”
句号后面的字母没变大写啊!
不知道哪错了,请大家指教.!


……
 case '.'&&'!'&&'?'://如果标点符号是"."或"!"或"?",将标点符号后一位的字母变成大写
                            //仔细看看你的条件吧?能否改成:       case '.':
                                                                    case '!':
                                                                   case '?':


[ 本帖最后由 幽园香客 于 2010-8-16 15:08 编辑 ]

做个有用的人!
2010-08-16 15:06
lerncav
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-7-26
收藏
得分:0 
回复 2楼 幽园香客
不是这个的问题,我试了试把case '.'||'?'||'!':    改成case '.':也不行。
2010-08-16 15:16
tantan821
Rank: 2
等 级:论坛游民
帖 子:21
专家分:19
注 册:2010-5-15
收藏
得分:1 
case只能用一个条件   还有就是ispunct返回的true  不是size_type
2010-08-16 15:21
lerncav
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-7-26
收藏
得分:0 
回复 4楼 tantan821
程序代码:
    string user;
    cin>>user;
    user[0]=toupper(user[0]);//把句子的第一个字母变成大写
    for (size_type sign=1;sign!=user.size();++sign)
    {
        if(ispunct(sign))//如果遇到标点符号
        {
            size_type signA;
            switch(sign)
            {
            case '.'://如果标点符号是"."或"!"或"?",将标点符号后一位的字母变成大写
                signA=user[sign+1];
                user[signA]=toupper(user[signA]);
                break;
            case '?':
                signA=user[sign+1];
                user[signA]=toupper(user[signA]);
                break;
            case '!':
                signA=user[sign+1];
                user[signA]=toupper(user[signA]);
                break;
            default:
                break;
            }
        }
    }
    cout<<user<<endl;
    return 0;
那那个关于ispunct的应该怎么改呢?指教一下?
2010-08-16 15:31
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:1 
不知道下面是不是你期望的代码:(我的理解就是,你要将每个句子的首字母变为大写)
程序代码:
    string user;
    cin>>user;
    user[0]=toupper(user[0]);//把句子的第一个字母变成大写
    for (size_type sign = 1; sign < user.size(); ++sign)
    {
        if ((user[sign] == '.') || (user[sign] == '?') || (user[sign] == '!'))
        {
            user[sign + 1] = toupper(user[sign + 1]);
        }
    }
    cout<<user<<endl;
    return 0;
另外,
    string user;
    cin>>user;
这样的话程序应该是不支持输入句子有空格的吧??

[ 本帖最后由 mxs810 于 2010-8-16 16:11 编辑 ]

授人以鱼不如授人以渔
2010-08-16 16:10
tantan821
Rank: 2
等 级:论坛游民
帖 子:21
专家分:19
注 册:2010-5-15
收藏
得分:0 
斑竹就是不一样  楼上正解
2010-08-16 16:15
towhee
Rank: 2
来 自:石家庄火车站
等 级:论坛游民
威 望:1
帖 子:48
专家分:69
注 册:2010-8-8
收藏
得分:1 
case后须是常量表达式。。。不晓得楼主的算不算常量表达式

最穷无非讨饭,不死终会出头
2010-08-16 17:25
lerncav
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-7-26
收藏
得分:0 
回复 6楼 mxs810
兄弟,你又帮了我一次!
呵呵。
可是,
那如果我想在String语句输入空格呢?
有什么方法没?
2010-08-16 17:31
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
回复 9楼 lerncav
你可以考虑改变一下输入数据的存储格式啊,
哈哈,比如说大数组了之类的,这需要你好好考虑一下啦~~

授人以鱼不如授人以渔
2010-08-16 18:04
快速回复:大家帮忙看看,关于String类型的代码。哈哈,版主再请进、
数据加载中...
 
   



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

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