C++ string容器

本文详细介绍了C++中string对象的初始化方法,包括默认初始化、拷贝构造以及使用C风格字符串初始化。接着讨论了string对象的常用函数,如empty用于检查是否为空串,size和length计算字符个数,以及通过下标访问字符。此外,文章还涉及字符串拼接、相等性比较以及通过c_str()获取C风格字符串。最后提到了范围for循环在遍历string对象中的应用。
摘要由CSDN通过智能技术生成

1. 定义初始化string对象

string s1;   // 默认初始化,s1 = ""; 空串,里面无字符;
string s2 = "I Love China!";  // 将"I Love China!"拷贝到s2中,不会拷贝'\0'
string s3(""I Love China!");  // 同上
string s4 = s2;   // 拷贝构造
string s5(s4);    // 拷贝构造

const char* p = "ABC";
string s6(p);        // 用c的字符串初始化string对象 

string s7(3, 'a');   // 将s7初始化为3个'a'组成的字符串

2. string常用函数

2.1 empty  判断是否为空串

string s1;
if(s1.empty()) {
}

2.2 size和length  无区别,计算string对象中字符个数,不包括'\0'

string s1;
s1.size();      // 0
s1.length();    // 0

string s2 = "我爱中国";
s2.size();      // 8
s2.length();    // 8

string s3 = "I Love China!";
s3.size();      // 13
s3.length();    // 13

2.3 s[n]  返回s对象中第n个字符

void test() {
    string s = "abc";
    s[0] = 'A';
    cout << s << endl;  // Abc
}

2.4  字符串拼接

void test() {
    string s1 = "abc";
	string s2 = "123";
	string s3 = s1 + s2 + " ! " + "xyz" + s1;  // 发生隐式类型转换,都转为string类型
	cout << s3 << endl;   // abc123 ! xyzabc

    // 但是如下无法发生隐式类型转换,原因不再赘述
    string s4 = "123" + "abc" + s1;  // 编译不通过
}

2.5 s1 == s2或s1 != s2  判断两字符串内容是否相同

void test() {
	string s1 = "ABC";
	string s2 = "ABC";
	string s3 = "123";

	cout << (s1 == s2) << endl;  // 1
	cout << (s1 == s3) << endl;  // 0

    /* 下面的比较都是字面量的比较,编译器比较它们的地址,通常相同的字面量存储在同一内存区域 */
    cout << ("123" == "123") << endl;  // 1
	cout << ("ABC" == "abc") << endl;  // 0
}

2.6 s.c_str()  返回指向s中字符串地址常量指针(包含'\0')

再次提醒:string s,则s中不包含‘\0’,因为string类有管理字符串长度的方式;但s.c_str()是包含末尾'\0'的,这是C中的字符串风格。

string s1 = "abc";
const char* p = s1.c_str();

2.7 范围for对string的使用

string s1 = "ABC";
for(auto& c : s1) {
    cout << c << endl;  // 会逐个字符输出
}

待补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟大的马师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值