1、标准库类型 string
初始化string对象一般有直接初始化和拷贝初始化
直接初始化 string s5("hello")
拷贝初始化 string s6 = "hello"
直接初始化第二种 string s7 (10,'C ')s7的内容是CCCCCCCCCC
拷贝初始化 string s8 = string(10 ,'C')
2 、string 对象上的 *** 作
is >> s | 从is中读取字符串赋值给s,字符串以空白分割,返回is |
---|---|
s.empty() | s为空返回true ,否则返回false |
s.size() | 返回s中的字符串个数 |
s1 != s2 | 等性判断对字母的大小写敏感 |
< <= > >= | 利用字符在字典中的顺序进行比较,对大小写敏感 |
3、读取未知数量的string对象
#include
#include
int main()
{
string word;
while(cin >> word )
{
cout << word << endl;
}
return 0;
}
4 、使用getline 读取一整行
有些时候我们希望能在最终得到的字符串中保留输入时的空白符,这个时候就可以用getline代替cin >> ;getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意此时换行符也被读入了)
#include
#include
int main()
{
string line;
while(getline(cin , line))
cout << line << endl;
return 0;
}
5、string的empty和size *** 作
只输出非空的行
#include
#include
int main()
{
string line;
while(getline(cin , line))
if(!line.empty())
cout << line << endl;
return 0;
}
6、两个string相加
string s1 = string s2 + string s3;
负责把右侧的string对象的内容追加到左侧的string 对象的后面
7、字面值和string对象相加
#include
#include
string s1 = "hello", s2 = "world";
string s3 = s1 + "," +s2 + "\n";
string s4 = s1 + ",";
string s5 = "hello" + "," //编译会出错,两个运算对象都不是字符串,而是字面值
//其实能够相加的只有字符串和符号
8、处理每个字符
遍历去处理string中的每个字符
for ( declaration : expression )
statement
其中的expression 是一个对象,代表一个序列,declaration部分负责定义一个变量,该变量用于访问序列中的基础元素,每次迭代,declaration部分的变量都会被初始化为expression 对象的下一个元素值。
string str ("some string");
for (auto c : string)
cout << c <
使用稍微复杂一点的例子,使用范围for语句和ispunct函数来统计string对象中标点符号的个数
string s("Hello World!!!");
decltype(s.size()) punct_cnt = 0;
for(auto c : s)
if(ispunct(c))
++punct_cnt;
cout << punct_cnt << endl;
使用范围语句for改变字符串字符
想要改变string对象中的字符的值,必须把循环变量定义成引用类型;
使用引用做循环控制时,这个变量实际上被依次绑定到序列的每个元素上;
string s("Hello world!!!");
for(auto &c : s)
c = toupper(c);
cout << s <
只处理一部分字符
下标运算符(索引)
string s("some string");
if(!s.empty())
s[0] = toupper(s[0]);
使用下标执行迭代
string s ("some string")
for (decltype(s.size()) index = 0; index != s.size() && !isspace(s[index]); ++index)
s[index] = toupper(s[index]);
输出是 SOME string
cin是以空格作为默认的截断符的,而getline默认以回车‘\n’作为截断符,可以指定getline的截断符类型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)