string 定义在命名空间std中
using std::string
初始化
string有直接初始化和拷贝初始化
直接初始化:string s3(“value”)
拷贝初始化:string s3 = “value”
区别在于:当初始值只有一个时,使用直接初始化或者拷贝初始化都行,但当初始值有多个时,一般来世只能用到直接初始化的方式
如:string s7(10, ‘c’) //直接初始化,s7的内容是cccccccccc
读写
可以直接使用cin, cout
cin在读入时,string对象会直接忽略开头的空白(即空格符,换行符,制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止
如:
int main()
{
string s;
cin>>s;
cout<<s<<endl;
return 0;
}
如果程序输入” Hello World! “,那么将会输出Hello,输出结果中无空格
或者使用getline读取一整行,
int main()
{
string line;
while (getline(cin, line))
cout << line << endl;
return 0;
}
如果程序输入” Hello World! “,那么将会输出 Hello World! ,getline遇到换行符就会退出,当然换行符从缓冲区被读入,但是不存储到字符串中,如果第一个字符就是换行符,那么将读入一个空串
处理每个字符,使用基于范围的for语句
for(declaration: expression)
statement
//统计string对象中标点符号的个数
string s("Hello World!!!");
decltype(s.size()) punct_cnt = 0;
for(auto c:s)
if(ispunct(c))
++punct_cnt;
cout << punct_cnt <<" punctuation characters in " << s << endl;
程序的输出结果将是:
3 punctuation characters in Hello World!!!
使用for语句改变字符串中的字符,那么要使用引用,for(auto &c : s)
那么c就是s中一个字符的别名,指向同一个地址,所以改变c也就是改变对应的字符
两种方法将0到15之间的十进制数转换成对应的十六进制数的形式,并以字符串的形式输出:
#include <iostream>
using namespace std;
/*
//方法1:设置一个常字符串,进行访问
int main()
{
const string hexdigits = "0123456789ABCDEF";
string::size_type n;
string s2 ;
while(cin>>n)
if(n<hexdigits.size()) //忽略无效输入
s2+=hexdigits[n];
cout<<"Your hex number is: "<<s2<<endl;
return 0;
}
*/
//方法2:对每个字符挨个转换,同时超出0-15范围的省略
int main()
{
string s;
string::size_type n;
while(cin>>n)
if(n<10)
s+=(char)(n+'0');
else if(n<16)
s+=(char)(n-10+'A');
cout<<"The hex num is: "<<s<<endl;
return 0;
}
这就是C++中string类型的调用了,希望对大家有所帮助