C++ stdstring类型
2021/7/30 1:05:58
本文主要是介绍C++ stdstring类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
string和vector是c++两种重要的标准库类型。前者是可变长度字符串,后者表示可变长度的集合。使用类型string必须包含string头文件。同样作标准库的一部分,string定义在命名空间std中。
#include <string> // 引入string的头文件 using std::string;
1. string的定义和初始化
string s1; // 定义字符串s1,默认初始化为s1是一个空的字符串。 string s2(s1); // s2是s1的副本 string s2 = s1; // 等价于s2(s1), s2是s1的副本 string s3("value"); // s3是字面值为"value"的副本,除了字面值最后的那个空字符串除外(直接初始化) string s3 = "value"; // 等价于s3("value"),s3的字面值"value"的副本(拷贝初始化) string s4(n, 'c'); // 把s4初始化为由连续n个字符C组成的字符串
- 拷贝初始化:使用“=”进行初始化,编译器把等号右侧的值拷贝到新创建的字符串中去。
- 直接初始化:不使用“=”进行初始化,则进行直接初始化。
**注意:直接初始化和拷贝初始化效率基本一样,因为在底层的实现基本一样,所以将拷贝初始化改为直接初始化效率提高不大。**在底层实现中,编译器的思想是能不用临时对象就不用临时对象。
具体底层区别请参考:https://www.cnblogs.com/cposture/p/4925736.html
2. string对象的操作
os << s // 将s写到输出流os中,返回os is >> s // 从is中读取字符串中赋给s,返回is getline(is , s) // 从is中读取一行,赋值给s,返回is s.empty() // s为空返回true, 否则返回false s.size() // 返回s中字符的个数 s[n] // 返回s中第n个字符串的引用,位置n从0开始记 s1 + s2 // 返回s1和s2的连接结果 s1 = s2 // 用s2的副本代替s1中原来的字符 s1 == s2 // 如果s1和s2中所含的字符完全一样,则他们相等;对字母的大小写敏感 <, <=, >, >= // 利用字符在字典中的顺序进行比较,且对字母的大小写敏感
- IO操作符读取写string变量
int main(){ string s; cin >> s; cout << s << endl; return 0; } // 有一点需要注意,在执行读取操作时,string对象会自动忽略开头的空表(即空格符、换行符、制表符) // 并从第一个真正的字符开始读起,知道遇到下一个空白为止。 // 如程序输入 “ hello world ” // 则输出为“hello world”,中间没有空格。
- getline读取一整行
int main(){ string line; // 每次读取一行,直到到达文件的末尾 while (getline(cin, line)) cout << line << endl; return 0; } // getline将输入流读取到string对象中,直到遇到换行符为止。 // 读取的存到string对象中的数据,不包含换行符。
-
string::size_type 类型
size()函数的返回值类型
标准库类string中定义的数据类型。string::size_type是一个无符号类型的值,足够存放任何string对象的大小。所有用于存放string类的size函数的返回值的变量,都用应该是string::size_type类型。
对于size函数的返回值,可以用auto或者decltype进行自动推断。
auto len = line.size(); //len的类型是string::size_type
-
范围for语句(range for)遍历字符串(c++11)
string str("hello world"); // 每行输出str中的一个字符 for (auto c : str){ std::cout << c << std::endl; } // 上述循环过程中c的类型是char。每次迭代,str的下一个字符拷贝给c // 转换成大写形式 for (auto &c :str) { // 注意此处 c是引用 c = toupper(C); // 改变c的值,相当于改变S中字符的值 } std::cout << str << std::endl; // 输出转换成大写后的str
- 下标运算符[]访问字符串中的字符
s[n] // 返回s中第n个字符串的引用,位置n从0开始记
注意:string对象的下标运算符输出必须大于0小于s.size(),超出范围将会引起不可预知的结果。
这篇关于C++ stdstring类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解