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++字符串std::string -> 正文阅读

[C++知识库]C++字符串std::string

@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。
如有错误的地方欢迎指正,谢谢!

一、std::string的使用

STL知识点思维导图:https://download.csdn.net/download/qq_43148810/12133484

二、字符转换

1、string(多字符)和wstring(宽字符、Uniocde编码)都是模板类basic_string类的实例化

using string = basic_string<char, char_traits<char>, allocator<char>>;
using wstring = basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>>;
using u16string = basic_string<char16_t, char_traits<char16_t>, allocator<char16_t>>;
using u32string = basic_string<char32_t, char_traits<char32_t>, allocator<char32_t>>;

2、字符串转整型或浮点型

int stoi(const string& _Str, size_t *_Idx = 0,int _Base = 10);
long stol(const string& _Str, size_t *_Idx = 0,int _Base = 10);
unsigned long stoul(const string& _Str, size_t *_Idx = 0,int _Base = 10);
long long stoll(const string& _Str, size_t *_Idx = 0,int _Base = 10);
float stof(const string& _Str, size_t *_Idx = 0);
double stod(const string& _Str, size_t *_Idx = 0);
long double stold(const string& _Str, size_t *_Idx = 0)

接口说明:
1)string和wstring两个重载版本版本
2)_Idx为返回有能够转换的有效字符数
3)_Base进制
4)_Str中允许有字符
5)_Str首字符开始解析,遇到无效字符终止
6)转换失败会抛出异常,应增加对其异常处理

boost中lexical_cast的实现

3、整型或浮点型转字符串

string to_string(int _Val);
string to_string(unsigned int _Val);
string to_string(long _Val);
string to_string(unsigned long _Val);
string to_string(long long _Val);
string to_string(unsigned long long _Val);
string to_string(float _Val);
string to_string(double _Val);
string to_string(long double _Val);

接口说明:
string和wstring两个重载版本版本: wstring to_wstring(T _Val);

4、格式控制符拼组字符串

int sprintf_s(char* const _Buffer,size_t const _BufferCount,char const* const _Format,...)

接口说明:
1)_Buffer格式化字符后写入的首地址,应预先分配好内存大小的
2)_BufferCount应预先分配内存大小
3)_Format格式化字符
4)不定数量和类型的参数列…
5)return,_Buffer实际输出大小
6)应为浮点数精度不够时发生截取,四舍五入;因控制符输出精度发生截取,去尾巴法
7)其他格式控制符语法与C语言scanf()和printf()完全一致,请参考:
C语言中的格式控制符

5、字符编码转换
1)ANSII编码单个字符占一个字节,中文用两个字节表示
2)Uniocde编码单个字符占两个字节,可容纳65536个字符,可容纳全世界现存所有字符
3)ANSII编码无法满足其他语言编码要求才产生了各类编码,推荐Uniocde编码,单个字符所占用内存一致
4)windowsAPI中对TCHAR和TBYTE的预处理语法
源码示例:

#include <windows.h>
#ifdef  UNICODE                     // r_winnt
	#ifndef _TCHAR_DEFINED
		typedef WCHAR TCHAR, *PTCHAR;
		typedef WCHAR TBYTE , *PTBYTE ;
		#define _TCHAR_DEFINED
	#endif /* !_TCHAR_DEFINED */
#else   /* UNICODE */
	#ifndef _TCHAR_DEFINED
		typedef char TCHAR, *PTCHAR;
		typedef unsigned char TBYTE , *PTBYTE ;
		#define _TCHAR_DEFINED
#endif /* UNICODE */ 

5)多字符转宽字符

wchar_t* charToWchar_t(const std::string& pChar)//入参兼容char*
{
	size_t leng = pChar.length() + 1;
	wchar_t* WStr = (wchar_t*)malloc(leng * sizeof(wchar_t));
	size_t converted = 0;
	mbstowcs_s(&converted, WStr, leng, pChar.c_str(), _TRUNCATE);
	return WStr;
}

6)宽字符转多字符

char* wchar_tTochar(const std::wstring& pWChar)//入参兼容wchar_t*
{
	size_t leng = pWChar.length() + 1;
	size_t converted = 0;
	char* pChar = (char*)malloc(leng * sizeof(char));
	wcstombs_s(&converted, pChar, leng, pWChar.c_str(), _TRUNCATE);
	return pChar;
}

三.str::string的内存分布

深入理解C++中std::String的内存布局

四.Copy On Write写时拷贝技术

Copy On Write写时拷贝技术

更多内容请关注个人博客:https://blog.csdn.net/qq_43148810

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 11:53:50  更:2021-07-26 11:54:35 
 
开发: 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/4 8:12:35-

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