Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7693213
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: C/C++

2011-08-11 21:17:03

参考:《C++Primer4th第四版中文版》

#include    //标准库string头文件

using std::string;  //using 声明

 

/*

 * string 对象的定义和初始化

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string s1;      //默认构造函数s1为空串

    string s2("Lzy"); //将S2初始化为一个字符串字面值副本

    string s3(s2);      //将s3初始化为s2的副本

    string s4(4,'a');   //将s4初始化为a的n(4)个副本

}

 

/*

 * string 对象的读写

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string s;

    cin>>s;

    cout<

    return 0;

}

 

/*

 * 读入未知数目的string 对象

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string word;

    while(cin>>word)

        cout<

    return 0;

}

 

/*

 * getline读取整行

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string line;

    while(getline(cin,line))//读取一行内容,不包括换行符

        cout<

    return 0;

}

 

列出了常用的 string 操作。

s.empty()  如果 s 为空串,则返回 true,否则返回 false

s.size()  返回 s 中字符的个数

s[n]  返回 s 中位置为 n 的字符,位置从 0 开始计数

s1 + s2  s1 s2 连接成一个新字符串,返回新生成的字符串

s1 = s2  s1 内容替换为 s2 的副本

v1 == v2 比较 v1 v2的内容,相等则返回 true,否则返回 false

!=, <, <=, >, and >= 保持这些操作符惯有的含义

 

 

 

/*

 * string对象size()操作

 * 返回对象中字符的个数

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string str("Lzy");

    cout<

    cout<<"字符个数:"<

 

    return 0;

}

 

/*

 * string对象empty()操作

 * 判断对象是否为空串

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string str;

    if(str.empty())

        cout<<"空串"<

    return 0;

}

 

/*

 * string对象操作

 * 字符串比较==

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string str1("Lzy "),str2("lzy");

    if(str1 == str2)

        cout<<"字符串相等"<

    else

        cout<<"字符串不相等"<

    return 0;

}

 

/*

 * string对象操作

 * 对象赋值

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string str1("Lzy "),str2;

    str2 = str1;

    cout<

 

    return 0;

}

 

/*

 * string对象操作

 * s1 + s2 把s1与s2连接成一个新字符串,返回新生成字符串

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string str1("Lzy "),str2("write C++ code");

    string str3 = str1+str2;

    cout<

    return 0;

}

/*

 * string对象操作

 * s1 += s2 把s2追加至s1

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string str1("Lzy "),str2("write C++ code");

    str1 += str2;

    cout<

    return 0;

}

 

/*

 * string对象操作

 * 和字符串字面值的连接

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string str1("hello"),str2("world");

    string str3 = str1 + ',' + str2 + "\n";

    cout<

    return 0;

}

 

/*

 * string对象获取字符

 * Lzy 2011-8-11

 */

 

#include

#include

using namespace std;

 

int main()

{

    string str("Lzy");

    for(string::size_type i=0; i

        cout<

    cout<

    return 0;

}

 

 

string 对象中字符的处理

我们经常要对 string 对象中的单个字符进行处理,例如,通常需要知道某个特殊字符是否为空白字符、字母或数字。表 3.3 列出了各种字符操作函数,适用于 string 对象的字符(或其他任何 char 值)。这些函数都在 cctype 头文件中定义。

 

isalnum(c)  如果 c 是字母或数字,则为 True

isalpha(c)  如果 c 是字母,则为 true

iscntrl(c)  如果 c 是控制字符,则为 true 

isdigit(c)  如果 c 是数字,则为 true

isgraph(c)  如果 c 不是空格,但可打印,则为 true

islower(c)  如果 c 是小写字母,则为 true

isprint(c)  如果 c 是可打印的字符,则为 true

ispunct(c)  如果 c 是标点符号,则 true

isspace(c)  如果 c 是空白字符,则为 true

isupper(c)  如果 c 是大写字母,则 true

isxdigit(c) 如果是 c 十六进制数,则为 true

tolower(c)  如果 c 大写字母,返回其小写字母形式,否则直接返回 c

toupper(c)  如果 c 是小写字母,则返回其大写字母形式,否则直接返回 c

 

运用这些函数输出一给定 string 对象中标点符号的个数:

string s("Hello World!!!");

     string::size_type punct_cnt = 0;

     // count number of punctuation characters in s

     for (string::size_type index = 0; index != s.size(); ++index)

         if (ispunct(s[index]))

             ++punct_cnt;

     cout << punct_cnt

          << " punctuation characters in " << s << endl;

 

tolower 函数把 string 对象 s 中的字母改为小写字母,程序如下:

     // convert s to lowercase

     for (string::size_type index = 0; index != s.size(); ++index)

         s[index] = tolower(s[index]);

     cout << s << endl;

阅读(2084) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~