学过一点C语言的人都知道,字符串操作是不可避免的,但C语言中字符串操作起来比较麻烦,比如两个字符串比较、连接、对串中某个字符进行操作等,需要调用相应地函数。而C++中,由于类概念的引入,在string类中定义了常用的字符串操作符和函数,只需在程序开头包含string文件,直接调用即可,相当方便。常用的string操作如表1:
表1 常用的 string 操作 | ||||||
s.empty() | 如果s为空字符串,则返回true | |||||
s.size() | 返回s中字符的个数 | |||||
s[n] | 返回s中位置为n的字符,位置从0开始计数 | |||||
s1 + s2 | 把s1和s2连接成一个新的字符串,返回新生成的字符串 | |||||
s1 = s2 | 把s1的内容替换成s2的副本 | |||||
s1 == s2 | 比较s1与s2中的内容,相等则返回true,否则false | |||||
!=, <, <=, >, >= | 保持这些操作符惯有的含义 |
表2 string 类中定义的函数 | ||||||
isalnum(c) | 如果c是字母或数字,则为true | |||||
isalpha(c) | 如果是字母,则为true | |||||
iscntrl() | 如果是控制字符,则为true | |||||
isdigit() | 如果是数字,。。。 | |||||
isgraph() | 如果不是空格,但可以打印,则为true | |||||
islower() | 小写字母 | |||||
isupper() | 大写字母 | |||||
isprint() | 可打印的字符 | |||||
ispunct() | 标点符号 | |||||
isspace() | 空白字符 | |||||
isxdigit() | 十六进制数 | |||||
tolower() | 如果是大写字母,则返回其小写字母,否则直接返回小写字母 | |||||
toupper() | 如果是小写字母,则返回其大写字母,否则直接返回大写字母 |
下面看一个应用实例,将一个字符串中所有大写字母换成小写,小写字母换成大写:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
//std::cout << "Hello, World!\n";
string line("Wuhan University!");
for(int index = 0;index <= line.size();++index)
line[index] = islower(line[index])?toupper(line[index]):tolower(line[index]);
cout << line <<endl;
return 0;
}
原字符串是
Wuhan University!
输出结果是
wUHAN uNIVERSITY!