当前位置: 首页 > news >正文

标准库标头 <string_view> (C++17)学习

此头文件是字符串库的一部分。本篇介绍string_view的基本用法。

函数

operator==

以字典序比较两个字符串视图
(函数模板)

operator<<

(C++17)

进行字符串视图的流输出
(函数模板)

swap

交换两个对象的值
(函数模板)
范围访问

begincbegin

(C++11)(C++14)

返回指向容器或数组起始的迭代器
(函数模板)

endcend

(C++11)(C++14)

返回指向容器或数组结尾的迭代器
(函数模板)

rbegincrbegin

(C++14)

返回指向一个容器或数组的逆向迭代器
(函数模板)

rendcrend

(C++14)

返回容器或数组的逆向尾迭代器
(函数模板)

sizessize

(C++17)(C++20)

返回容器或数组的大小
(函数模板)

empty

(C++17)

检查容器是否为空
(函数模板)

data

(C++17)

获得指向底层数组的指针
(函数模板)

示例代码:

#include <iomanip>
#include <iostream>
#include <string_view>
#include <cstring>//https://zh.cppreference.com/w/cpp/header/string_view#pragma warning(disable:4996)
//C4996	'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.//C++17标准
int main()
{//operator<<  example   (C++17)进行字符串视图的流输出constexpr std::string_view s{ "abc" };constexpr int width{ 5 };// fill/left/right 属性保留不变直至被修改std::cout << std::setfill('-');std::cout << std::left;std::cout << '[' << std::setw(width) << s << "]\n";std::cout << '[' << std::setw(width) << s << "]\n";std::cout << std::right;std::cout << '[' << std::setw(width) << s << "]\n";// 每次调用后重置宽度std::cout << '[' << s << "]\n";//swap examplestd::string_view s1{ "first" };std::string_view s2{ "were" };std::cout << "s1===========" << s1 << "\n";std::cout << "s2===========" << s2 << "\n";s2.swap(s1);std::cout << "s1===========" << s1 << "\n";std::cout << "s2===========" << s2 << "\n";//operator== examplestd::cout << "(s1==s2)=============" << (s1 == s2) << "\n";const char* source = "123456789";char dest[20];strcpy_s(dest, 10, source);//numberOfElements等于字符串大小std::cout << dest << "*\n";//data examplestd::string_view s3{"hello world"};char a3[32] = {'\0'};const char* src = s3.data();std::cout << "src==========" << src << "\n";std::strcpy(a3, s3.data());std::cout << "s3===========" << s3 << "\n";std::cout << "a3===========" << a3 << "\n";//empty examplestd::cout << "s3.empty=====" << s3.empty() << "\n";//size examplestd::cout << "s3.size======" << s3.size() << "\n";//begin example//std::string_view::iterator it = s3.begin();auto begin = s3.begin();std::cout << "begin========" << *begin << "\n";//cbegin exampleauto cbegin = s3.cbegin();std::cout << "cbegin=======" << *cbegin << "\n";//end exampleauto end = s3.end();end--;std::cout << "end==========" << *end << "\n";//cend exampleauto cend = s3.cend();cend--;std::cout << "cend=========" << *cend << "\n";//begin,cbegin,end,cend是一样的都不能修改值//rbegin exampleauto rbegin = s3.rbegin();std::cout << "rbegin========" << *rbegin << "\n";//crbegin exampleauto crbegin = s3.crbegin();std::cout << "crbegin=======" << *crbegin << "\n";//rend exampleauto rend = s3.rend();rend--;std::cout << "rend==========" << *rend << "\n";//crend exampleauto crend = s3.crend();crend--;std::cout << "crend=========" << *crend << "\n";}

运行结果:

 参考:

标准库标头 <string_view> (C++17) - cppreference.com


http://www.mrgr.cn/news/5275.html

相关文章:

  • 5步掌握Python Django结合K-means算法进行豆瓣书籍可视化分析
  • LabVIEW深度监测系统
  • 数据结构--单链表
  • 多功能秒达工具箱全开源源码,可自部署且完全开源的中文工具箱
  • 投资伦敦银一般看什么点位做单?
  • sqlite3基本操作/数据库编程
  • uniapp中 使用 VUE3 组合式API 怎么接收上一个页面传递的参数
  • XSS-games
  • Java TCP练习2
  • 【系统架构设计】软件架构设计(1)
  • LeeCode Practice Journal | Day50_Graph01
  • 【STM32】C语言基础补充
  • [mongodb][查询]MongoDb 模糊查询
  • 开闭原则(Open-Closed Principle, OCP)详解
  • RabbitMQ的基础概念介绍
  • dp题目集合
  • Windows Microsoft Edge 浏览器 配置【密码】
  • Python实战:如何使用K-means算法进行餐馆满意度NLP情感分析
  • 【Redis】单线程架构
  • Python知识点:如何使用Flask与AWS Lambda构建无服务器应用