1、字符串查找
s.find(s1)
s.rfind(s1)
s.find_first_of(s1)
s.find_last_of(s1)
s.fin_first_not_of(s1)
s.fin_last_not_of(s1)
字符串截取
s.substr(pos, n)
s.substr(pos)
字符串替换
s.replace(pos, n, s1)
代码测试(字符串操作.cpp)
#include <iostream>
using namespace std;
void findSubString(string str){
cout << str.find("fs") << endl;
cout << str.rfind("s") << endl;
}
void getSubString(string str){
cout << str.substr(2) << endl;
cout << str.substr(2, 2) << endl;
}
void replaceString(string str){
cout << str.replace(0,2,"xiaoming") << endl;
}
int main()
{
string str = string("sdfsf");
replaceString(str);
return 0;
}
字符替换(用x替换字符串中所有的a.cpp)
#include <iostream>
using namespace std;
void replaceAWithX(string str){
int pos;
pos = str.find("a");
while(pos != -1){
str.replace(pos,string("a").length(),"x");
pos = str.find("a");
}
cout << str << endl;
}
int main()
{
string str = string("fsafsdf");
replaceAWithX(str);
return 0;
}
C++ string类中的字符串查找
类string提供了大量查找功能和搜索功能,其中比较常用的查找和搜索函数是find()函数、
find_first_not_of()函数、find_first_of()函数、find_last_not_of()函数、find_last_of()函数、rfind()等。
find()函数的语法如下所示:
(1) size_type find(E c, size_type pos = npos) const;用来查找单个字符在字符串中出现的位置并返回
该位置基于0的索引值。
(2) size_type find(const E *s, size_type pos = npos) const;用来查找以空字符结尾的字符数组在
字符串中出现的位置并返回该位置基于0索引值。
(3) size_type find(const E *s, size_type pos, size_type n = npos) const;用来查找以空字符结尾的
字符数组在字符串中出现的位置并返回该位置基于0索引值,它是从npos开始查找的。
(4) size_type find(const basic_string &str, size_type pos = npos) const;用来查找字符串并且返回
该搜索的字符串的基于0索引值的位置值,它是从npos开始查找的。
find()函数的功能是从std::string对象的头部顺序找目标值,如果找到返回该目标值出现的位置,如果没有在字符串对象中找到目标对象,返回值为-1。
rfind()函数的语法如下所示:
(1) size_type rfind(E c, size_type pos = npos) const;用来反向查找单个字符在字符串中出现的位置
并返回该位置基于0的索引值。
(2) size_type rfind(const E *s, size_type pos = npos) const;用来反向查找以空字符结尾的字符数组
在字符串中出现的位置并返回该位置基于0索引值。
(3) size_type rfind(const E *s, size_type pos, size_type n = npos) const;用来反向查找以空字符
结尾的字符数组在字符串中出现的位置并返回该位置基于0索引值,它是从npos开始查找的。
(4) size_type rfind(const basic_string &str, size_type pos = npos) const;用来反向查找字符串并且
返回出现该搜索的字符串的基于0索引值的位置值,它是从npos开始查找的。
rfind()函数的功能是从std::sring对象的尾部反向查找目标值,如果找到返回该目标值出现的位置,如果没有在字符串对象中找到目标对象,返回值为-1。
find_first_not_of()函数的常见语法如下所示:
size_type find_first_not_of(E c, size_type pos = 0) const;
size_type find_first_not_of(const E *s, size_type pos = 0) const;
size_type find_first_not_of(const E *s, size_type pos, size_type n) const;
size_type find_first_not_of(const basic_string &str, size_type pos = 0) const;
该函数的功能是在string对象中查找对象,如果在string出现了完全不匹配的字符,字符串或以空字符结尾的字符数组时,系统显示第一次出现这种情形的位置。如果定义了pos,从pos开始搜索。
find_first_of()函数的常见语法如下所示:
size_t find_first_of( const string& str, size_t pos = 0 ) const;
size_t find_first_of( const char* s, size_t pos, size_t n ) const;
size_t find_first_of( const char* s, size_t pos = 0 ) const;
size_t find_first_of( char c, size_t pos = 0 ) const;
该函数的功能是在string对象中查找对象,如果在string出现了任意完全匹配的字符,字符串或以空字符结尾的字符数组时,系统显示第一次出现这种情形的位置。如果定义了pos,从pos开始搜索。只要在string对象中出现了匹配对象,立即返回位置。
find_last_not_of()函数的常见语法如下所示:
size_t find_last_not_of( const string& str, size_t pos = npos ) const;
size_t find_last_not_of( const char* s, size_t pos, size_t n ) const;
size_t find_last_not_of( const char* s, size_t pos = npos ) const;
size_t find_last_not_of( char c, size_t pos = npos ) const;
该函数的功能是在string对象中反向查找对象,如果在string出现了任意完全不匹配的字符,字符串或以空字符结尾的字符数组时,系统显示第一次完全不匹配时出现的位置。如果定义了pos,从pos反向开始搜索。只要在string对象中出现了完全不匹配的对象,立即返回位置值。
find_last_of()函数的常见语法如下所示:
size_t find_last_of( const string& str, size_t pos = npos ) const;
size_t find_last_of( const char* s, size_t pos, size_t n ) const;
size_t find_last_of( const char* s, size_t pos = npos ) const;
size_t find_last_of( char c, size_t pos = npos ) const;
该函数的共是在string对象中反向查找对象,如果在string出现了任意完全匹配的字符,字符串或以空字符结尾的字符数组时,系统显示第一次出现这种情形的位置。如果定义了pos,从pos开始反向搜索。只要在string对象中出现了匹配的对象,则立即返回位置值。
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
string str1("Heartbeat");
string str2("abcde");
int iPos = 0;
cout << "The string to search is '" << str1.c_str() << "'" << endl;
iPos = str1.find_first_of(str2, 0);
cout << "Element in '" << str2.c_str() << "' found at position " << iPos << endl;
iPos = str1.find_first_of(str2, 2);
cout << "Element in '" << str2.c_str() << "' found at position " << iPos << endl;
char achVowels[] = {'a', 'e', 'i', 'o', 'u'};
iPos = str1.find_first_of(achVowels, 4, sizeof(achVowels));
cout << "Element in '";
for (int i = 0; i < sizeof(achVowels); ++i)
{
cout << achVowels[i];
}
cout << "' found at position " << iPos << endl;
char szVowels[] = "aeiou";
iPos = str1.find_first_of(szVowels, 0);
cout << "Element in '" << szVowels << "' found at position " << iPos << endl;
iPos = str1.find_first_of('e', 2);
cout << "'e' found at position " << iPos << endl;
return 0;
}
运行结果为:
The string to search is ‘Heartbeat’
Element in ‘abcde’ found at position 1
Element in ‘abcde’ found at position 2
Element in ‘aeiou’ found at position 6
Element in ‘aeiou’ found at position 1
‘e’ found at position 6
附:
stoi函数: 将string类型转换成int类型的函数
stod函数: 将string类型转换成double类型的函数
atof函数: 将string类型转换成double类型的函数
stoi - C++ Reference (cplusplus.com)
stod - C++ Reference (cplusplus.com)
atof - C++ Reference (cplusplus.com)
两个函数的共同特性:
1.会自动截取所需要的类型数值
2.遇到非数字,截取停止,即使后面有数字也不会继续读取了
atof函数的个性:
1.未找到时返回值为0
2.stod函数使用对象为string类型,而atof函数为const char*
stoi/stod函数适应性较好,可以读取string类型的字符串
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)