标准库类型string--《C++ primer》
来源:互联网 发布:汽车保险软件 编辑:程序博客网 时间:2024/06/05 09:28
标准库类型string类
首先定义和初始化string对象有以下几种方式:
string a1; string a2=a1; string a3="Hello"; //拷贝初始化string a4=(10,'S'); string a5=("World"); //直接初始化string a6=(a1);
对string类对象操作还要有相应的操作,主要操作如下:
os << s //将s写到输出流os当中,返回osis >> s //从is中读取字符串赋给s,字符串以空格分隔,返回isgetline(is, s) //从is中读取一行赋给s,返回iss.empty() //s为空返回true,否则falses.size() //返回s中字符的个数s[n] //返回字符s中第n个字符s1+s2s1==s2 s1!=s2 <,<=,>=,> //利用字符在字典中的顺序进行比较,且对字母的大小写敏感
string对象操作实例:
#include <iostream>#include <string>using namespace std;int main(){ int m; string s1("abcdefg"); cout << "s1=" <<s1<<endl<<endl; cout << "!!!!!s1=" <<s1[3]<<endl<<endl; string s2=string(10,'d'); cout << "s2=" <<s2<<endl<<endl; string s3; s3=s1+s2; cout << "s3=" <<s3<<endl<<endl; m=s1.size(); cout << "s1长度: "<<m<<endl<<endl; if(!s1.empty()){ cout<<"Hello"<<endl<<endl; } string s4=(s1+", ")+"world"; cout <<"s4="<<s4<<endl<<endl; string s5; cout << "Please enter character string" <<endl; getline(cin,s5); cout <<"s5="<<s5<< endl<<endl; return 0;}
对string对象赋值中可以直接赋值也可将一对象的值赋给另外一个对象的值,如string a("ABCDEF"),b; b=a;而后相加操作可以两个对象相加(string a=“C++”,b=“primer”;string c=a+b;),也可以字面值和string对象相加,但是要注意不能直接将字面值相加而应string对象和字面值相加,如:
string s2="C++";string s1=s2+","+"Primer"; //正确string s3="Hello"+","+s1; //错误
string对象中的字符处理应用很广泛,那么其对应的操作也相当多,下面是cctype头文件中的函数一览表:
isalnum(c) //假如c是字母或数字,则为true isalpah(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对象中的单个字符有两种方式:
<1>使用下标
string str("Hello C++ Primer"); if(!str.empty()) str[6]=tolower(str[6]); cout << str[6] << endl;
<2>使用迭代器
<em>string str1="Hello C++ Primer"; string::size_type punct_cnt = 0; for(string::size_type i=0;i!=str1.size();++i) { if(ispunct(str1[i])) ++punct_cnt; str1[i]=toupper(str1[i]); } cout<<"字符中标点符号共有:"<<punct_cnt<<endl; cout<<str1<<endl; </em>
也可利用下标随机访问string对象中的任意字符
#include <iostream> using namespace std; int main() { string str1="0123456789ABCDEF"; string::size_type punct_cnt; string str2; while(cin >> punct_cnt) if(punct_cnt < str1.size()) str2 += str1[punct_cnt]; cout<<str2<<endl; return 0; }
C++II新标准中提供了基于范围的for语句,这种语句bain里给定序列中的每个元素并对序列鲜红的每个值执行操作,语法
for (declaration:expression);
string str="Hello world!!"; for(auto ch:str) cout << ch << endl;
0 0
- c++primer学习笔记(3.2)标准库string类型
- C++primer 3.2 标准库类型string(sizeof的使用)
- c++primer笔记--3.2标准库类型string
- c++primer学习笔记-----3.2标准库类型string
- C++Primer 标准库类型
- [C++ Primer] 标准库string类型
- 【C++ Primer】标准库string类型
- 标准库类型string--《C++ primer》
- 《C++Primer》 第三章 标准库类型
- C++primer第三章:标准库类型
- 《C++Primer》读书笔记---标准类型库
- c++Primer,三,标准库类型
- C++primer 3.3 标准库类型 vector
- C++ Primer 第三章 标准库string类型
- c++ primer 第三章 标准库类型 string
- 【C++ Primer每日刷】之三 标准库 string 类型
- c++ primer学习笔记3-标准库类型string&vector
- C++ Primer(第四版)笔记1 标准库string类型
- USACO3.1.3 Humble Numbers (humble)
- 链表的再一次理解
- 基于uploadify.js实现多文件上传和上传进度条的显示
- 算法进化历程之“最大连续子序列之和”
- 08Recreating an Activity
- 标准库类型string--《C++ primer》
- 工作一年多感想
- 信号报告
- 按6个算法求839647521后的第999个排列
- USACO3.1.4 Contact (contact)
- swfobject.embedSWF属性与用法 [复制链
- 斐波那契公式
- Java基础语法
- USACO3.1.5 Stamps (stamps)