string和vector是c++两种重要的标准库类型。前者是可变长度字符串,后者表示可变长度的集合。使用类型string必须包含string头文件。同样作标准库的一部分,string定义在命名空间std中。
#include <string>
using std::string;
1. string的定义和初始化
string s1;
string s2(s1);
string s2 = s1;
string s3("value");
string s3 = "value";
string s4(n, 'c');
- 拷贝初始化:使用“=”进行初始化,编译器把等号右侧的值拷贝到新创建的字符串中去。
- 直接初始化:不使用“=”进行初始化,则进行直接初始化。
**注意:直接初始化和拷贝初始化效率基本一样,因为在底层的实现基本一样,所以将拷贝初始化改为直接初始化效率提高不大。**在底层实现中,编译器的思想是能不用临时对象就不用临时对象。
具体底层区别请参考:https://www.cnblogs.com/cposture/p/4925736.html
2. string对象的操作
os << s
is >> s
getline(is , s)
s.empty()
s.size()
s[n]
s1 + s2
s1 = s2
s1 == s2
<, <=, >, >=
int main(){
string s;
cin >> s;
cout << s << endl;
return 0;
}
int main(){
string line;
while (getline(cin, line))
cout << line << endl;
return 0;
}
string str("hello world");
for (auto c : str){
std::cout << c << std::endl;
}
for (auto &c :str) {
c = toupper(C);
}
std::cout << str << std::endl;
s[n]
注意:string对象的下标运算符输出必须大于0小于s.size(),超出范围将会引起不可预知的结果。
|