using 关键字
类似 python里的import,是个导入命名空间的关键字,用法
using namespace::name
- 头文件中不要使用using关键字,会导致其他使用了头文件的地方产生未知的行为。
string
初始化
string s1;
string s2(s1);
string s2=s1;
string s3("value");
string s4 = "value";
string s5(2,'c');
s4,s2=s1 这两种初始化的方式叫做拷贝初始化,编译器把等号右侧的值拷贝到新创建的对象中去。不用等号叫做直接初始化。
string的操作
os<<s;
is>>s;
getline(is,s);
s.empty();
s.size();
s[n];
s1+s2
s1=s2
s1==s2 比较字符内容是否完全一样
s1!=s2
<,<=,>,>= 利用字符在字典中的顺序进行比较,且对字母的大小写敏感
- s.size() 返回的不是无符号数,而是string::size_type类型
string字符串比较的规则
- "=="和"!="对两个string所包含的字符进行比较,大小写全部相同,则相对,否则不相等
- ">","<",">=","<=" 如果s1是s2的从第一个字母开始的子串,则s1小于s2
- 如果两个string对象某些位置上字母不一致,则从第一个相异字母开始用字典序进行比较
字符相加的规则:
- 允许将字符和字符串相加,但 + 号两侧,必须有其中一个是string对象,若两个都是字面值,则非法
如
string s1 = "world" ;
string s2 = "hello" + s1;
合法,但
string s1 = "hello"+ "world";
非法。
- 字符串字面值和string不是同一种类型
如何遍历string
string str1("some string");
for(auto c : str)
cout<<c<<endl;
如何使用for改变字符串中的字符
string s("hello world");
for (auto &c:s)
c = toupper(c);
cout<<s<<endl;
只修改其中一个字符
使用下标
string s("hello");
s[0] = 'a';