分类: C/C++
2011-08-11 21:17:03
参考:《C++Primer4th第四版中文版》
#include
using std::string; //using 声明
/*
* string 对象的定义和初始化
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string s1; //默认构造函数s1为空串
string s2("Lzy"); //将S2初始化为一个字符串字面值副本
string s3(s2); //将s3初始化为s2的副本
string s4(4,'a'); //将s4初始化为a的n(4)个副本
}
/*
* string 对象的读写
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string s;
cin>>s;
cout<
return 0;
}
/*
* 读入未知数目的string 对象
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string word;
while(cin>>word)
cout<
return 0;
}
/*
* getline读取整行
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string line;
while(getline(cin,line))//读取一行内容,不包括换行符
cout<
return 0;
}
列出了常用的 string 操作。
s.empty() 如果 s 为空串,则返回 true,否则返回 false。
s.size() 返回 s 中字符的个数
s[n] 返回 s 中位置为 n 的字符,位置从 0 开始计数
s1 + s2 把 s1 和s2 连接成一个新字符串,返回新生成的字符串
s1 = s2 把 s1 内容替换为 s2 的副本
v1 == v2 比较 v1 与 v2的内容,相等则返回 true,否则返回 false
!=, <, <=, >, and >= 保持这些操作符惯有的含义
/*
* string对象size()操作
* 返回对象中字符的个数
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string str("Lzy");
cout<
cout<<"字符个数:"<
return 0;
}
/*
* string对象empty()操作
* 判断对象是否为空串
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string str;
if(str.empty())
cout<<"空串"<
return 0;
}
/*
* string对象操作
* 字符串比较==
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string str1("Lzy "),str2("lzy");
if(str1 == str2)
cout<<"字符串相等"<
else
cout<<"字符串不相等"<
return 0;
}
/*
* string对象操作
* 对象赋值
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string str1("Lzy "),str2;
str2 = str1;
cout<
return 0;
}
/*
* string对象操作
* s1 + s2 把s1与s2连接成一个新字符串,返回新生成字符串
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string str1("Lzy "),str2("write C++ code");
string str3 = str1+str2;
cout<
return 0;
}
/*
* string对象操作
* s1 += s2 把s2追加至s1
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string str1("Lzy "),str2("write C++ code");
str1 += str2;
cout<
return 0;
}
/*
* string对象操作
* 和字符串字面值的连接
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string str1("hello"),str2("world");
string str3 = str1 + ',' + str2 + "\n";
cout<
return 0;
}
/*
* string对象获取字符
* Lzy 2011-8-11
*/
#include
#include
using namespace std;
int main()
{
string str("Lzy");
for(string::size_type i=0; i
cout<
cout<
return 0;
}
string 对象中字符的处理
我们经常要对 string 对象中的单个字符进行处理,例如,通常需要知道某个特殊字符是否为空白字符、字母或数字。表 3.3 列出了各种字符操作函数,适用于 string 对象的字符(或其他任何 char 值)。这些函数都在 cctype 头文件中定义。
isalnum(c) 如果 c 是字母或数字,则为 True。
isalpha(c) 如果 c 是字母,则为 true。
iscntrl(c) 如果 c 是控制字符,则为 true
isdigit(c) 如果 c 是数字,则为 true。
isgraph(c) 如果 c 不是空格,但可打印,则为 true。
islower(c) 如果 c 是小写字母,则为 true。
isprint(c) 如果 c 是可打印的字符,则为 true。
ispunct(c) 如果 c 是标点符号,则 true。
isspace(c) 如果 c 是空白字符,则为 true。
isupper(c) 如果 c 是大写字母,则 true。
isxdigit(c) 如果是 c 十六进制数,则为 true。
tolower(c) 如果 c 大写字母,返回其小写字母形式,否则直接返回 c。
toupper(c) 如果 c 是小写字母,则返回其大写字母形式,否则直接返回 c。
运用这些函数输出一给定 string 对象中标点符号的个数:
string s("Hello World!!!");
string::size_type punct_cnt = 0;
// count number of punctuation characters in s
for (string::size_type index = 0; index != s.size(); ++index)
if (ispunct(s[index]))
++punct_cnt;
cout << punct_cnt
<< " punctuation characters in " << s << endl;
用 tolower 函数把 string 对象 s 中的字母改为小写字母,程序如下:
// convert s to lowercase
for (string::size_type index = 0; index != s.size(); ++index)
s[index] = tolower(s[index]);
cout << s << endl;