C++(17):from_chars和to_chars
C++17继续完善了字符串和数值的转换,提供了char*与数值件的转换:
数值 -> char*
整形类型转成字符串:
to_chars_result to_chars(char* first, char* last, IntegerT value, int base = 10);
浮点数转成字符串:
to_chars_result to_chars(char* first, char* last, FloatT value);
to_chars_result to_chars(char* first, char* last, FloatT value, chars_format format);
to_chars_result to_chars(char* first, char* last, FloatT value, chars_format format, int precision);
[first, last)为存储转换结果的连续内存区间。
函数返回值为:
struct to_chars_result {
char* ptr;
errc ec;
};
如果转换成功的话,ptr为写入到[first, last)的最后一个字符的下一个地址,ec值等于std::errc()。
如果转换不成功的话,ptr值为last,ec的值不等于std::errc()。
值得注意的是to_chars不会写入字符串结束符\0。
#include <charconv>
#include <string_view>
#include <iostream>
using namespace std;auto pRet = [](auto ptr, auto ec, char* str)
{if (ec == errc()){cout << "to_chars ok str=" << str << " ptr=" << ptr << endl;}else{cout<< "to_chars failed"<<endl;}
};int main()
{int d = 4321;char s1[10] = {0};auto [ptr1, ec1] = to_chars(s1, s1 + sizeof(s1), d);pRet(ptr1, ec1, s1); //输出:to_chars ok str=4321 ptr=char s2[] = "12";auto [ptr2, ec2] = to_chars(s2, s2 + sizeof(s2), d);pRet(ptr2, ec2, s2); //输出:to_chars failed,空间不够char s3[] = "1234567890";auto [ptr3, ec3] = to_chars(s3, s3 + sizeof(s3), d);pRet(ptr3, ec3, s3); //输出:to_chars ok str=4321567890 ptr=567890string s4(10, '8');auto [ptr4, ec4] = to_chars(s4.data(), s4.data() + s4.size(), d);pRet(ptr4, ec4, s4.data()); //输出:to_chars ok str=4321888888 ptr=888888return 0;
}
char* -> 数值
from_chars_result from_chars(const char* first, const char* last, IntegerT& value, int base = 10);
from_chars_result from_chars(const char* first, const char* last, FloatT& value, chars_format format = chars_format::general);
[first, last):要装换的字符串
base:进制
返回值与to_chars相同
#include <charconv>
#include <iostream>
using namespace std;int main()
{char s1[] = "1234a";char s2[] = " 5678";int i1 = 0, i2 = 0;auto [ptr1, ec1] = from_chars(s1, s1+sizeof(s1), i1);if (ec1 == errc()){cout << "from_chars ok i1=" << i1 << " ptr1=" << ptr1 << endl;}else{cout<< "from_chars failed"<<" ptr1=" << ptr1 << endl;}auto [ptr2, ec2] = from_chars(s2, s1+sizeof(s2), i2);if (ec2 == errc()){cout << "from_chars ok i2=" << i2 << " ptr2=" << ptr2 << endl;}else{cout<< "from_chars failed"<<" ptr2=" << ptr2 << endl;}return 0;
}运行程序输出:
from_chars ok i1=1234 ptr1=a
from_chars failed ptr2= 5678
可见,from_chars不能忽略字符串开头的空白
C++(17):from_chars和to_chars相关推荐
- c ++函数功能查询器_C ++ 17新功能和技巧
c ++函数功能查询器 目录 (Table of Contents) Introduction 介绍 Settings an integrated development environment (I ...
- 在C ++中将int转换为字符串的最简单方法
在C ++中从int转换为等效string的最简单方法是什么. 我知道两种方法. 有没有更简单的方法? (1) int a = 10; char *intStr = itoa(a); string s ...
- arduino int转char_将char *转换为int arduino(Convert char* to int arduino)
将char *转换为int arduino(Convert char* to int arduino) 我有问题从char获取int值..这里 Serial.println(((char *)&quo ...
- c++17 to_chars、from_chars、if、结构化绑定
c++17 to_chars.from_chars.if.结构化绑定 说明 std::to_chars std::from_chars 示例代码 输出 参考 说明 std::to_chars 通过成功 ...
- C ++ 17中有哪些新功能?
C ++ 17现在功能齐全,因此不太可能经历大的变化. 为C ++ 17提出了数百个提案. 在C ++ 17中,哪些特性被添加到C ++中? 当使用支持"C ++ 1z"的C ++ ...
- C++17新特性总结
参考链接:C++17 一.语言特性 1.1 折叠表达式 C++17中引入了折叠表达式,主要是方便模板编程,分为左右折叠,下图为其解包形式: template <typename... Args& ...
- C++11、C++14、C++17、C++20新特性总结(5万字详解)
文章目录 C++ 11是什么,C++ 11标准的由来 C++ auto类型推导完全攻略 auto 类型推导的语法和规则 auto 的高级用法 auto 的限制 auto 的应用 使用 auto 定义迭 ...
- 【CV】吴恩达机器学习课程笔记第17章
本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 17 大规模机器学习 17-1 学习大数据集 17-2 随 ...
- 零起点学算法17——比较2个数大小
零起点学算法17--比较2个数大小 Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lld Description 输入2个整数, ...
最新文章
- Oracle存储过程返回游标实例详解
- 机器视觉:ransac算法详解
- sql注入问题-视图-事物-以及存储过程(可视化工具)
- strictmath_Java StrictMath nextAfter()方法与示例
- JDK8下载,安装及环境变量的配置
- 剑指Offer之左旋字符串
- BoltDB 一个简单的纯 Go key/value 存储 [译]
- Theano学习笔记:Theano的艰辛安装体验
- 微软切断XP供应 Vista成制造商惟一选择
- Iaas,paas,saas区别与联系
- linux通过usb链接网络,Nokia N9 通过USB连接使用PC(Linux)主机的网络
- 2020-12-02HTML及标签
- Linux XFS文件系统修复
- 第一章 SQL中使用的符号
- costmap_2d 中计算footprint 的内切圆半径和外切圆半径的函数解析——点到线段的距离计算
- 4.Transact_Sql语言基础
- 鸿蒙系统推广时间,鸿蒙系统将全面推广,目标覆盖3亿台设备,第三方IoT可达1亿台...
- 计算机网络设备的种类,计算机网络设备选型依据.ppt
- uniapp离线打包SDK
- Windows Installer:正在安装其他程序。请等待该安装完成,然后再次尝试安装此软件
热门文章
- .net 文字转语音简单应用 SpeedSynthesis,部署IIS
- 谈20年美赛与我的建模完整经历
- 计算机视觉基础7---色彩空间变换
- 微信小程序原生集成vant weapp注意点 (https://youzan.github.io/vant-weapp/#/intro)
- 支线剧情-上下界网络流
- 【C++编程题】买房与选房(排序,模拟)
- linux命令行界面出现菱形,Linux显示菱形解决.md
- k8s(Kubernetes)中Pod,Deployment,ReplicaSet,Service之间关系分析
- Netfilter和iptables学习总结
- scrapy爬动态网址哔哩哔哩