码迷,mamicode.com
首页 > 其他好文 > 详细

标准库类型string

时间:2015-05-17 13:45:35      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:string

string

string表示可变长的字符序列。

#include<string>
using std::string 

初始化

string s6("hiya");//直接初始
string s7(10, ‘c‘);//10个c
string s8 = "hah ";//拷贝初始

string对象的大多数操作

s.empty() s为空返回true,否则为false
s.size() 返回s中字符个数
//读取时忽略开头的空白,从第一字符开始,停在下一处空白
string s;
cin >> s;
cout << s << endl;
//读取未知数量的的string对象
string word;
    while (cin>>word) //反复读取,直至文件末尾
        cout << word << endl;//逐个输出单词
//使用getline函数读取一整行,保留字符中的空白符。
//遇到换行符则停止,不论换行符在头还是尾
    string line;
    while (getline(cin,line))
    {
        cout << line << endl;
    }//getline读取了换行符,但是输出时被舍弃了
//使用empty()判断是否为空
//每次读入一正行,遇到空行则直接跳过
    while (getline(cin, line))
        if (!line.empty())//判断对象是否为空的函数
        cout << line << endl;
//使用size()返回string的长度,即string对象中字符的个数
string line;
while (getline(cin, line))
    if (line.size > 80)
    cout << line << endl;
//size函数返回的是无符号整形数。
//若用了size函数,就不要再使用int,避免int和unsigned可能带来的问题
//例如:假设n是一个负值的n,则s.size()<n的判断结果几乎是true的
比较string对象
比较长度不同,切短的string对象每个字符都与较长的相同,则断对象小于长对象。
比较在默写对应位置上不一致的,则比较的是他们中第一对相异字符。
字符串相加
字符字面值和string对象以及字符串字面值混在一起相加时,必需保证每个+运算符两侧至少有一个是string对象
string s6 = s1 + "," + world;正确
string s7 = "hello" + "," +s2; 错误

单独处理string对象中的字符

             **处理特定字符**  
#include<cctype>
isalnum(c);//字母或数字
isalpha(c);//字母
iscntrl(c);//控制字符时
isdigit(c);//数字时
isgraph(c);//不是空格但可以打印时
islower(c);//小写字母
isprint(c);//可打印字符(即c是空格或或c具有可视形式)
ispunct(c);//标点符号
isspace(c);//空白
isupper(c);//大写字母
isxdigit(c);//十六进制数

tolower(c);//若c为大写字母,输出对应小写字母,否则,原样输出
toupper(c);//若c为小写字母,输出对应大写字母,否则,原样输出
        **处理每个字符**
范围for语句
for(declaration: expression)
    statement;
//expression是一个对象,declaration定义一个变量
//输出每个字符。
string str("song string");
for (auto c : str)
//通过使用auto让编译器决定c的类型
//每次迭代,str的下一个字符被拷贝给c
     cout << c << endl;
//统计标点符号数
 string s("hello!!!!");
 decltype(s.size()) n = 0;
//使用decltype声明变量n的类型为s。size返回的类型
for (auto c :s )
     {
    if (ispunct(c))
         ++n;
     }
改变string对象中的字符的值,必需把循环变量定义为引用类型
string s("hello!!!!");
for (auto &c : s)
      c = toupper(c);
cout << c << endl;

处理部分或只是其中一个,说着访问多个字符但遇到某个条件就要停下来,例如,同样改大小写,但只要求第一个字母或第一个单词。
一种使用下标,一种使用迭代器

不论什么时候,在访问指定字符前,首先检查string对象是否为空。
string s("hello!!!!");
if (!s.empty())
    {
    cout << s[0] << endl;
    s[0] = toupper(s[0]);
    cout << s[0] << endl;
     }
//依次处理s中的字符直至我们处理完全部字符或遇到一个空白
string s("sone shi");
for (decltype(s.size()) i = 0; 
       i != s.size() && !isspace(s[i]); ++i)
     s[i] = toupper(s[i]);
 cout << s << endl;

标准库类型string

标签:string

原文地址:http://blog.csdn.net/jkelion/article/details/45788325

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!