string的相关用法

发布时间 2023-10-28 12:49:39作者: 猫爷很疲惫

string的相关用法

一、string对象初始化

  常见的初始化有两种方式:拷贝初始化和直接初始化。

点击查看代码
string s1="hello";//拷贝初始化
string s2("world");//直接初始化
string s3(10,c);//十个c,cccccccccc

二、string对象的运算

  string运算左右位必须要有一个string的对象,不能两个字面值直接参与运算。

点击查看代码
	string S1 = "hello";
	string S2 = "world";
	string S3 = S1 + S2;//可以直接相加
	S3 = S1 + "world";//可以由一个string对象与一个字面值相加
	S3 = "hello" + "world";//error , 不能字面值直接相加

三、读取未知数量的string对象

1. 一个单词一个单词的读取遇见空格或换行结束。

点击查看代码
	string word;
	while (cin >> word)
	cout << word << endl;

2. 使用getline读取一整行,需要使用string的头文件。 getline函数会读取换行符但不会输出。

点击查看代码
while (getline(cin, line))
{
	if (!line.empty())//empty函数是来判断读取的string是否为空
		cout << line << endl;
}

四、处理string对象中的字符

一、处理每个字符

c++11中的语句:范围for语句。
语法形式为:for(declaration:expression)

expression部分是一个对象,表示一个序列。declaration部分用于定义一个变量,该变量访问序列中的对象。
简单来说,将expression中的string对象当成一串字符数组也是字符序列,每次迭代将序列中的字符依次赋值给declaration

代码示例(将一串小写字母转换成大写)
点击查看代码
	string s("hello! world!");
	for (auto& c : s)//使s中每一个字符引用封装为c
		c = toupper(c);//将s中的字符变为大写后重新赋值给c
	cout << s;
	输入: hello!wold!
	输出: HELLO!WOLD!

二、处理单个字符

  利用下标索引,将string对象当成字符数组利用下标找到需改便的对象。

例如首字母大写:

点击查看代码
	string s("some string");
	if(!s.empty())
		s[0]=toupper(s[0]);
		
	结果:Some string

利用下标执行迭代

  依次处理s中的字符将小写转为大写,直到处理完全部或遇见空白。
代码示例:

点击查看代码
	string s("hello! world!");
	for (decltype(s.size()) index = 0; index <= s.size()&& !isspace(s[index]); index++)//isspace用来判断是否为空格,若为空格则不符合循环条件
		s[index] = toupper(s[index]);
	cout << s;
	
	输出:HELLO! world!