IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ stdstring类型 -> 正文阅读

[C++知识库]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++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:34:13  更:2021-07-30 12:34:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 9:12:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码