C++字符串操作小结
忽略大小写比较大小
-
库函数strcasecmp和_stricmp:
这两个函数都不属于C++标准库,strcasecmp由POSIX引入,windows平台则定义了功能等价的_stricmp。用法和C++标准库的strcmp类似。#include <cstring> #if defined(_WIN32) #define strcasecmp _stricmp #endif
-
boost函数iequals:
#include <boost/algorithm/string.hpp> int main(int argc, const char *argv[]) { bool equal = boost::iequals("ABC", "abc"); return 0; }
在gcc -O2的条件下,发现iequals比strcasecmp慢了很多。
读取一整行
istream& getline (istream& is, string& str, char delim);
istream& getline (istream& is, string& str);
std::string
类提供了读取一整行的接口,从标准输入读取时,可以用getline(std::cin, str)
来读取整行数据。
转义字符
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
|代表一个反斜线字符''' | 092 | |
' | 代表一个单引号(撇号)字符 | 039 |
" | 代表一个双引号字符 | 034 |
? | 代表一个问号 | 063 |
\0 | 空字符(NULL) | 039 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |