string操作(去掉字符串前后空格,统计输入的字符串中单词的数量,将给定的字符串中的所有空格去掉)
#include<iostream>
using namespace std;
#include <regex>
//把1到多个空格换成一rep表示字符串
void mergeSpace(string &src, string rep) {
//创建一个正则表达式对象(re),用于pi 配一到多个空格
regex re("\\s+");
//把src字符串符一到多个空格换成rep字符串
src = regex_replace(src, re, rep);
}
void f1() {
string str = " Hello World Yes ";
mergeSpace(str, "ABC");
cout<<str<<endl;
}
/*
string对象.find_first_not_of(char c);
返回第一个不是字符c的索引
string对象.find_last_not_of(char c);
返回最后一个不是字符c的索引
erase(pos, n):
删除从pos位置开始的n个字符, 当余下的字符不足n个时,有多少删除多少。
erase(pos):
删除从pos位置开始的所有字符。
*/
//作业1:封装一个函数,去掉字符串前后空格
void delSpace(string &str) {
int n = str.find_first_not_of(' ');//返回第一个不是字符' '的索引。
str.erase(0, n);//str="far sight ";
int begin = str.find_last_not_of(' ');//返回最后一个不是字符' '的索引,
str.erase(begin+1);//str="far sight";
}
void f2() {
string no = " far sight ";
delSpace(no);
cout<<no<<endl;//"far sight"
cout<<no.size()<<endl;
}
//作业2:编写一个程序,统计输入的字符串中单词的数量。假设单词之间有1到多个空格隔开,
int countWords(string str) {
delSpace(str);//str="I am teacher";
//把1到多个空格换成一rep表示字符串 void mergeSpace(string &src, string rep)
mergeSpace(str, " ");//str="I am teacher";
int count = 0;
/*
for(char c: str) {
//cout<<c<<endl;
if(c==' ') {
count++;
}
}
*/
for(unsigned long i=0; i<str.size(); i++) {
char c = str.at(i);
//cout<<c<<endl;
if(c==' ') {
count++;
}
}
return ++count;
}
void f3() {
string pas = " I am teacher ";
int count = countWords(pas);
cout<<"pas的count = "<<count<<endl;
}
//作业3:请实现一个函数,实现字符串反转,并返回返转的字符串。 (不能使用库函数)
//作业4:请实现一个函数,将给定的字符串中的所有空格去掉,并返回处理后的字符串
void f4() {
string pas = " I am teacher ";
mergeSpace(pas, "");
cout<<pas<<endl;
}
int main() {
f4();
return 0;
}