用法

输入输出

可以输入中文。

在输入字符串时("str")最后会多加\n,但不影响输出、长度判断等。

在输入字符时('c')最后不会加\n

输入

*输入到一个已经有值的字符串中,会将其覆盖(,长度也更新)。

输出

初始化

对于一个已经有值的字符串,重新输入 / 定义,都可以重新覆盖值。

运算

  1. 字符串的处理可以类比数组。数组从0开始,长度从1开始。

  2. 连接多个字符串,用符号+stra=stra+" "+strb;
    但用这个方法不能写为 strb=stra[0]+stra[0];,可以写为strb=stra[0];strb+=stra[0];,也可以写为strb=stra.substr(0,1)+stra.substr(0,1);

  3. 更改字符串内容:stra[1]='a';

  4. 删除字符串内容:stra.erase(2,2);,同子字符串提取,(从0开始,长度含首位),删除后,后面的内容向前补位。

返回值

  1. 字符串比较:直接比较(stra > strb),从左到右,同excel。("acaaaa" > "abzzzz")。

  2. 字符串长度:stra.length();

  3. 子字符串提取:7为开始值,5为长度,提取stra[2]和stra[3]:stra.substr(2, 2);(从0开始,长度含首位)

  4. 字符串查找:int answer = stra.find("word");
    若不含该值,则answer为string::npos(整数型:-1,直接输出为18446744073709551615,过程中可用answeranswer2==-1answer2==string::npos,不可用answer2==18446744073709551615);含有该值时,answer为字符串word的第一个出现的位置,位置从0开始,同更改字符串内容。

  5. 获取字符串的始末位置:stra.begin()stra.end(),为整数型,可搭配stra.end()-3

例题

基础

1. 倒序输出一个数

题目来源:洛谷 - P1307 [NOIP2011 普及组] 数字反转

(该题不用字符串更方便)

#include <bits/stdc++.h>
using namespace std;
int main() {
	string s1,s2;
	cin >> s1;    //字符串:输入
	if(s1[0] == '-'){
		if(s1.length() == 1){    //字符串:获取长度
			cout << "0";
			return 0;
		}
		cout << "-";
		for(int i=s1.length()-1;i>=1;i--){    //字符串:获取长度
			s2+=s1[i];    //字符串:连接、获取特定位
		}
		/*
		if(s2[0]=='0'){
			s2.erase(0,s2.find_first_not_of('0'));
		}
		*/
		while(s2[0]=='0'){
			s2.erase(0,1);    //字符串:删除
		}
		cout << s2;    //字符串:输出
	}
	else{
		for(int i=s1.length()-1; i>=0; i--){    //字符串:获取长度
			s2+=s1[i];    //字符串:连接、获取特定位
		} 
		/*
		  if(s2[0]=='0'){
		  s2.erase(0,s2.find_first_not_of('0'));
		  }
		 */
		while(s2[0]=='0'){
			s2.erase(0,1);    //字符串:删除
		}
		cout<<s2;    //字符串:输出
	}
	return 0;
}

2.

https://www.luogu.com.cn/problem/P1012