string要和文件操作、stringstream一起复习!
Review:文件操作
Review:stringstream
废话不多说。直接上代码。
string s("This is a 汉语句子。");
cout<<s<<endl;
cout<<s.empty()<<endl;
string::size_type string_size = s.size(); // 返回字符串s的总字符数
cout<<"size:"<<string_size<<endl;
string::size_type len = s.length();
cout<<"len:"<<len<<endl;
auto size2 = s.size();
cout<<size2<<endl;
This is a 汉语句子。
0
size:20
len:20
20
// 建议,调用size的时候,写auto 变量名;
// string::size_type 无符号的整形,和int型不一样!!
// cin>>s; // 遇到空白或换行就结束! 和getline不一样!
// cout<<s<<endl;
getline(cin,s); // 直到“换行”才结束!
cout<<s<<endl;
// cin 和 getline 的处理方式不一样!
// getline函数的第一个参数,也可以写为 fstream类型的变量
// fstream ifs(filePath,ios::in); string s;
// getline(ifs,s);
string s1 = "a/";
string s2 = "a";
cout<<(s1==s2)<<endl;
string::size_type i = s1.length();
cout<<i<<endl;
s1和s2是不一样的!
s1的字符串个数是2,s2的是1。
string s3 = "ABCcdEfg";
transform(s3.begin(),s3.end(),s3.begin(),::tolower);
cout<<s3<<endl;
对transform函数的说明。
//first1是第一个容器的首迭代器,last1为第一个容器的末迭代器,
first2为第二个容器的首迭代器,result为存放结果的容器,
binary_op为要进行操作的二元函数对象或sturct、class。 */
对string中的字符进行操作
string s4 = "ABC啊";
cout<<s4.at(s4.length()-1)<<endl; // 也不能输出 “啊” // 因为一个汉字占了2个字符!
cout<<s4.at(s4.length()-3)<<endl; // 可以输出“C”
for (auto & c : s4) // 有汉字,就取不出来了!
{
c = toupper(c); // 引用传递! // 所以s4会全部变成大写
cout<<c<<endl;
}
string的随机访问
string s5 = "cdefg";
cout<<s5[0]<<endl;
string相加。
string sa = "abc";
sa += "def";
string sb = "ghi";
string sc = sa + sb;
cout<<sa<<endl;
cout<<sb<<endl;
cout<<sc<<endl;
要保证加号两边,至少有一个是string。"asdf"+"asdf"是不允许的。