| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1549 人关注过本帖
标题:大家帮忙看看,关于String类型的代码。哈哈,版主再请进、
只看楼主 加入收藏
lerncav
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-7-26
收藏
得分:0 
回复 10楼 mxs810
那还有什么类型是和String一样支持长度可变的字符输出呢?
2010-08-16 18:32
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:1 
程序代码:
#include<iostream>
#include <cstring>
#include<cctype>
using namespace std;

int main()
{
    char user[100];
    //string user;
    cout<<"Input a sentence, Spaces into ^"<<endl<<endl;
    cin.getline(user,100);
    
    user[0]=toupper(user[0]);
    
    for (int sign=1;sign!=100;sign++)
    {
        if((user[sign] == '.') || (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;
} 


  • 满眼生机转化钧;天工人巧日争新。
2010-08-16 22:47
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
12楼ciweitou163的思路应该可以符合你的要求啦~~

还有一点,不要总是修改自己的1楼的帖子好不,有问题继续回帖,
不然到最后你都弄不明白你的初始问题是什么了,改到最后都没有问题啦,成水帖啦,谨记!!!!

授人以鱼不如授人以渔
2010-08-17 09:02
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
如果你用 char 数组的话,库函数 strpbrk 可能对你想干的事有帮助。
比如你的 char buf[] 里存了一串字符,那么:
char *p = strpbrk(buf, ".?!;")
就会把 buf 里第一次出现 . ? ! ; 的那个字符的位置用指针返回来。
你再 p = strpbrk(p, ".?!;"); 就可以继续分析剩下的。返回 NULL 表示字符串里没有 . ? ! ; 中的任何一个了。

如果你想用 String 那么通用通用算法 find_first_of (在头文件 algorithm 里)可以做类似的工作。

我说的这两种写法的好处是,将来如果你想扩展所谓句子的定义,比如你希望 "" 引号里的东西也算句子呀,或者行首的也算句子呀。或者你忽然认为 ; 不应该是句子分隔的标志(英文习惯上 ; 是不分隔句子的,; 号后面的单词不首大写。这个习惯和中文有点不一样,可能有的人并不知道,我调侃一下)的话,只用改很少的代码就可以做到。而且代码的可维护性和可读性可以提高。

当然楼上所有同志给的处理方法依然是一些值得采纳的方法。
2010-08-18 01:29
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
我那两个函数介绍得不是很详尽,有关它们的用法如果不是很明白的,自己网上查一下就可以了。
2010-08-18 01:31
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
以下是引用pangding在2010-8-18 01:29:37的发言:

如果你用 char 数组的话,库函数 strpbrk 可能对你想干的事有帮助。
比如你的 char buf[] 里存了一串字符,那么:
char *p = strpbrk(buf, ".?!;")
就会把 buf 里第一次出现 . ? ! ; 的那个字符的位置用指针返回来。
你再 p = strpbrk(p, ".?!;"); 就可以继续分析剩下的。返回 NULL 表示字符串里没有 . ? ! ; 中的任何一个了。

如果你想用 String 那么通用通用算法 find_first_of (在头文件 algorithm 里)可以做类似的工作。

我说的这两种写法的好处是,将来如果你想扩展所谓句子的定义,比如你希望 "" 引号里的东西也算句子呀,或者行首的也算句子呀。或者你忽然认为 ; 不应该是句子分隔的标志(英文习惯上 ; 是不分隔句子的,; 号后面的单词不首大写。这个习惯和中文有点不一样,可能有的人并不知道,我调侃一下)的话,只用改很少的代码就可以做到。而且代码的可维护性和可读性可以提高。

当然楼上所有同志给的处理方法依然是一些值得采纳的方法。
查了一下 strpbrk这个函数的帮助
  #include <string.h>
  char* strpbrk( const char* str1, const char* str2 );

处理上面的问题的确是得心应手啊,哈哈,学习了~~~

授人以鱼不如授人以渔
2010-08-18 08:50
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:1 
下次发帖最好直接说明是什么问题...
2010-08-18 23:31
快速回复:大家帮忙看看,关于String类型的代码。哈哈,版主再请进、
数据加载中...
 
   



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

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