C++ primer 第五版 中文版 练习 9.47
题目:编写程序,首先查找string "ab2c3d7R4E6" 中的每个数字字符,然后查找其中每个字母字符。
编写两个版本的程序,第一个要使用find_first_of,第二个要使用find_first_not_of。
答:
/*
编写程序,首先查找string "ab2c3d7R4E6" 中的每个数字字符,然后查找其中每个字母字符。
编写两个版本的程序,第一个要使用find_first_of,第二个要使用find_first_not_of。
*/
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
//找出string 中每个数字字符 返回找到的数字字符串
string find_numbers( const string &str)
{
string tmpstr("0123456789");
string newstr;
string::size_type pos = 0;
while ((pos = str.find_first_of(tmpstr, pos)) != string::npos)
{
newstr += str[pos];
++pos;
}
return newstr;
}
//找出string 中每个字母字符 返回找到的字母字符串
string find_letter(const string &str)
{
string tmpstr("0123456789");
string newstr;
string::size_type pos = 0;
while ((pos = str.find_first_not_of(tmpstr, pos)) != string::npos)
{
newstr += str[pos];
++pos;
}
return newstr;
}
int main()
{
string mystr("ab2c3d7R4E6");
string mystr_numbers, mystr_letters;
mystr_numbers = find_numbers(mystr);
mystr_letters = find_letter(mystr);
cout << "mystr原来的字符串为:" << mystr << endl;
cout << "mystr中的数字字符为:" << mystr_numbers << endl;
cout << "mystr中的字母字符为:" << mystr_letters << endl;
return 0;
}