【C语言】字符串整理

输入

1.%s(无取地址符!)

char s[100];
scanf("%s",s);

只能读到空格或换行。

2.(f)gets

char s[100];
gets(s);//better not
fgets(s,sizeof(s),stdin);//better

字符串可以包含空格或者换行。

3.字符

char s;
while(true){
    s=getchar();
    if(s=='0'){
        break;
    }
}

特定情况结束。

4.输入流

getline(cin,s);

将完整一行的输入数据读入到字符串中,可以包含空格。

函数

1.cstring库函数

strlen
#include<cstring>
strlen(a);

字符串长度,不计算'\0'

strcmp
int c=strcmp(a,b);

a>b,c>0

a=b,c=0

a<b,c<0

strcat
strcat(a,b);

b的内容加到a里(a足够大)

strcpy
strcpy(a,b);

b的内容复制到a(a足够大)

2.string库函数

可以直接string s定义字符串。

连接
s+=str;

s.append(str);
比较大小(ASCII)
s<str
长度
s.size;

s.length;
截取字符串
s.substr(3,7);

从第3个位置开始7个字符,截下这个字符串。

插入
insert(3,str);

从第3个字符前插入字符串。

寻找
s.find(str,[pos]);

在字符串s中第pos个字符开始寻找字符串str,并返回其位置,找不到返回-1。

替换
s.replace(pos,n,str);

在字符串s中第pos个字符开始把长度为n的字符串替换为str。

实战

洛谷P1308  单词数统计

#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
int main(){
	string sen;
	string word;
	int m,s;
	s=0;
	getline(cin,word);
	getline(cin,sen);
	
	for(int i=0;i<word.length();i++){
		if(word[i]<'Z'&&word[i]>'A'){
			word[i]=word[i]+32;
		}else{
			continue;
		}
	}for(int i=0;i<sen.length();i++){
		if(sen[i]<'Z'&&sen[i]>'A'){
			sen[i]=sen[i]+32;
		}else{
			continue;
		}
	}word=' '+word+' ';
	sen=' '+sen+' ';
	
	int n;
	if(sen.find(word)==-1){
		printf("-1");
	}else{
		m=sen.find(word);
		n=sen.find(word);
		while(n!=-1){
			s++;
			n=sen.find(word,n+1);
		}
		printf("%d %d",s,m);
	}
	return 0;
}

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值