初始化:
string s1
string s2(s1)
string s2 = s1
string s3("value")
string s3 = "value"
string s4(n,'c')
读取未知个数的字符串
1)cin
cin读取字符串时,遇到leading whitespace(eg spaces,newlines,tabs)就会完成一次读取。
string word;
while(cin>>word)
cout<<word<<endl;
2)getlin()
当我们想整行读取时,可以使用getline,当遇到换行时完成一次读取。
string line;
while(getline(cin,line))
cout<<line<<endl;
string操作
1)enpty和size
empty()返回true,字符串是否为空
size()返回字符串个数,注意它的类型时一个unsigned类型,string::size_type因此,在比较时,要注意unsigned类型不要和负值比较。
auto len = line.size();//len has type string::size_type
==,当两个字符串有相同的字符内容时,返回真。
>,< 有三种情况
string str = "Hello";
string phrase = "Hello World";
string slang = "Hiya";
str<phrase , slang > phrase>str (i>e)
3)字符串相加
string s1 = "hello,", s2 = "world\n"
string s3 = s1 +s2;//s3 is hello,world\n
string s4 = s1 + ",";//ok
string s5 = "hello" + ",";//error: no string operand
string s6 = s1 + "," + "world";//ok
string s7 = "hello" + "," + s2;//error can't add string literals
4)字符串访问
遍历每一个字符
for(auto c:str)
cout << c << endl;
for(auto &c : s)
c = toupper(c);
for(decltype(s.size())) index = 0;index != s.size() && !isspace(s[index]);++index)
s[index] = toupper(s[index]);
const string hexdigits = "0123456789ABCDEF"
string result;
string::size_type n;
while (cin >> n)
if(n < hexdigits.size())
result += hexdigits[n];
cout << result << endl;
cctype Functions
需要引入cctype库。
isalnum(c)
isalpha(c)
iscntrl(c)
isdigit(c)
islower(c)
isgraph(c)
isprint(c)
ispunct(c)
isspace(c)
isupper(c)
isxdigit(c)
tolower(c)
toupper(c)