我是靠谱客的博主 诚心皮带,最近开发中收集的这篇文章主要介绍#字符串 一)关于字符串的输入输出 二) 一张字符串有关的学案#关于字符串的输入输出#字符串处理(这是某张学案上的知识点),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • #关于字符串的输入输出
    • string输入例子
    • 一、括号树
  • #字符串处理(这是某张学案上的知识点)
    • 字符串基本操作
    • POJ 3981 字符串替换
      • 【C程序1】
      • 【C程序2】
      • 【C程序3】
    • C++ 字符串长度:
    • c++ 删除字符串指定位置的字符
    • 截取子串
    • 替换子串
    • 查找子串
    • 字符串基本操作练习列表(是VJ上的题):

#关于字符串的输入输出

这些是会用到的
只要知道两个就够了(大部分题目要求不高)
一个是string,一个是char c[N];

  1. 这是string 类型的
//这样遇到空格就会结束
string s;
cin >> s;

//这样写会计入空格,输入换行才会结束。
getline(cin,a);
  1. 这是char类型的
//从第一位开始记录
//注意这里不要加&
char str[N];
scanf("%s", str + 1);

string输入例子

一、括号树

重点:

题目描述:第二行一个长为 n 的由 ( 与 ) 组成的括号串,第 i 个括号表示 i 号结点上的括号。
也就是输入了一串字符串,用char str[N];定义,scanf("%s", str + 1); 输入

char str[N];
int main()
{
……
    scanf("%s", str + 1);
……
    return 0;
}

#字符串处理(这是某张学案上的知识点)

字符串处理是竞赛中的常见题目,除了简单的字符串查找、替换、匹配等问题以外,还有比较复杂的字符串算法,其中应用广泛的有字符串哈希、KMP、字典树(Trie Tree),AC自动机和后缀数组等。

字符串基本操作

读入
查找
替换
截取
数字和字符串转换
读入 gets()getchar();
读字符: char ch1;ch1=getchar();
读字符串: char str[1002];gets(str);
String类: string str; getline(cin,str);

POJ 3981 字符串替换

编写一个C++程序实现将字符串中的所有"you"替换成"we"
Input
输入包含多行数据
每行数据是一个字符串,长度不超过1000
数据以EOF结束
Output
对于输入的每一行,输出替换后的字符串
Sample Input
you are what you do
Sample Output
we are what we do
85 wind
83 memory

【C程序1】

下面的程序一次读取一个完整的字符串,用gets()函数实现。
在比赛中不建议使用gets()函数。

#include<cstdio>
char str[1002];
int main(){
	int i;
	while(gets(str)!=NULL){
		for(int i=0;str[i]!='';i++){
			if(str[i]=='y'&&str[i+1]=='o'&&str[i+2]=='u'){
				printf("we");
				i+=2;
			}
			else
				printf("%c",str[i]);
		}
		printf("n");
	}
	return 0;
} 

【C程序2】

下面的程序一次只读一个字符,用getchar()函数实现。
这个程序比上一个程序要好,因为它不需要定义一个字符串数组,当然也不用考虑数组的大小。

#include<cstdio>
int main(){
	char ch1,ch2,ch3;
	while((ch1=getchar())!=EOF){
		if(ch1=='y'){
			if((ch2=getchar())=='o'){
				if((ch3=getchar())=='u')
					printf("we");
				else
					printf("yo%c",ch3);
			}else
				printf("y%c",ch2);
		}
		else
			printf("%c",ch1);
	}
	return 0;
}

使用cin读入字符串时,遇到空白就停止读取,
有时我们想把一个句子存下来,又不想创建多个string来存储单词,怎么办?
那就用getline来获取一整行内容。

【C程序3】

下面的程序用到string类,getline()函数

#include<iostream>
#include<string>
using namespace std;
int main(){
	string str;
	int pos;
	while(getline(cin,str)){
		while((pos=str.find("you"))!=-1)
			str.replace(pos,3,"we");
		cout<<str<<endl;
	}
	return 0;
}

C++ STL中最基本以及最常用的类或容器无非就是以下几个:vector、set、list、map、String
用string初始化字符串分两类:用“=”号就是拷贝初始化,否则就是直接初始化。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用const_iterator使得访问元素时是能读不能写,这跟常量指针意思差不多。
string str("hi you");
for (string::const_iterator it = str.begin(); it != str.end(); it++){
cout << *it << endl;
*it = 'k'; //这是错误的,不能写
}

C++ 字符串长度:

求字符串长度用.size()或者.length()

c++ 删除字符串指定位置的字符

string erase(int start, int len);
//start为要删除字符的起始位置(从0数起),len为要删除字符的个数。

截取子串

s.substr(pos, n) //截取s中从pos开始(包括0)的n个字符的子串,并返回
s.substr(pos) //截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回

替换子串

s.replace(pos, n, s1) //用s1替换s中从pos开始(包括0)的n个字符的子串

查找子串

s.find(s1) 查找s中第一次出现s1的位置,并返回(包括0)
s.rfind(s1) 查找s中最后次出现s1的位置,并返回(包括0)
s.find_first_of(s1) 查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0)
s.find_last_of(s1) 查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0)
s.fin_first_not_of(s1) 查找s中第一个不属于s1中的字符的位置,并返回(包括0)
s.fin_last_not_of(s1) 查找s中最后一个不属于s1中的字符的位置,并返回(包括0)

字符串基本操作练习列表(是VJ上的题):

题目链接(自己进去搜)

760 字符串长度 60.54% 简单
761 字符串中的数字个数 51.48% 简单
762 字符串匹配 25.98% 简单
763 循环相克令 42.67% 简单
764 输出字符串 31.50% 简单
765 字符串加空格 53.89% 简单
766 去掉多余的空格 66.67% 简单
767 信息加密 43.23% 简单
768 忽略大小写比较字符串大小 34.18% 简单
769 替换字符 72.00% 简单
770 单词替换 51.89% 中等
771 字符串中最长的连续出现的字符 60.00% 中等
772 只出现一次的字符 40.88% 中等
773 字符串插入 48.28% 中等
774 最长单词 52.03% 中等
775 倒排单词 81.82% 中等
776 字符串移位包含问题 44.23% 困难
777 字符串乘方 78.12% 困难
778 字符串最大跨距 37.86% 困难

补上ASCII表

最后

以上就是诚心皮带为你收集整理的#字符串 一)关于字符串的输入输出 二) 一张字符串有关的学案#关于字符串的输入输出#字符串处理(这是某张学案上的知识点)的全部内容,希望文章能够帮你解决#字符串 一)关于字符串的输入输出 二) 一张字符串有关的学案#关于字符串的输入输出#字符串处理(这是某张学案上的知识点)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部