c++17 to

您所在的位置:网站首页 string的chars方法 c++17 to

c++17 to

2024-01-16 23:04| 来源: 网络整理| 查看: 265

c++17 to_chars、from_chars、if、结构化绑定 说明std::to_charsstd::from_chars 示例代码输出参考

说明 std::to_chars

通过成功填充范围 [first, last) ,转换 value 为字符串,要求 [first, last) 是合法范围。

整数格式化函数: value 以给定基底 base 转换成数位的字符串(无冗余的前导零)。范围 10…35 (含上下限)中的数字被表示成小写字母 a…z 。若值小于零,则表示以负号起始。库提供所有有符号及无符号整数和 char 类型作为参数 value 类型的重载。bool 的重载被删除。 to_chars 拒绝 bool 类型参数,因为假如允许则结果会是 “0”/“1” 而非 “false”/“true” 。如同用 std::sprintf 于默认( “C” )本地环境转换值为字符串。转换指定符是 f 或 e ,根据最短表示方式的要求选择(两者相当时优先选择 f ):字符串表示由小数点(若存在)前至少有一位,且用对应的 std::from_chars 分析该表示能准确恢复值的,最小数量的字符组成。若有数个这种表示,则选择到 value 的差最小者,用根据 std::round_to_nearest 的舍入解决任何剩余倾向同 (3) ,但若 fmt 为 std::chars_format::fixed 则如同对应 printf 的转换指定为 f ,若 fmt 为 std::chars_format::scientific 则为 e ,若 fmt 为 std::chars_format::hex 则为 a (但结果无前导 “0x” ),且若 fmt 为 chars_format::general 则为 g 。同 (4) ,除了精度以参数 precision 指定,而非以最短表示要求。返回类型(见后述返回值)。 std::to_chars_result 无基类或 ptr 、 ec 及隐式声明的特殊成员函数以外的成员。 参数 first, last - 要写入的字符范围 value - 要转换到其字符串表示的值 base - 使用的整数基底: 2 与 36 间的值(含上下限)。 fmt - 使用的浮点格式, std::chars_format 类型的位掩码 precision - 使用的浮点精度 返回值 成功时,返回 to_chars_result 类型的值,其 ec 等于值初始化的 std::errc ,且其 ptr 是指向被写入字符尾后一位置的指针。注意该字符串不是空终止的。 错误时,返回 to_chars_result 类型的值,它在 ec 保有 std::errc::value_too_large 于 ,在 ptr 保有 last ,并于范围 [first, last) 中留下未指定状态的内容。 std::from_chars

按照后述模式分析字符序列 [first,last) 。若无字符匹配模式或若按照分析匹配字符获得的值不能以 value 的类型表示,则不修改 value ,否则将匹配模式的字符转译成算术值的文本表示,并将值存储于 value 。

整数分析函数:期待等同于 std::strtol 于默认( “C” )本地环境所使用者相同的模式,并给定非零整数底,除了 对底 16 不识别 “0x” 或 “0X” 前缀 仅识别负号(不识别正号),而且只针对 value 的有符号整数类型。 库为所有有符号和无符号整数类型和 char 提供重载,这些类型是参数 value 的被引用类型。 2-4) 浮点分析函数:期待期待等同于 std::strtod 于默认( “C” )本地环境所使用者相同的模式,除了 不识别指数外的正号(在起始位置只允许出现负号) 若 fmt 设置了 std::chars_format::scientific 而无 std::chars_format::fixed ,则要求指数部分(否则可选) 若 fmt 设置了 std::chars_format::fixed 而无 std::chars_format::scientific ,则不允许可选的指数部分 若 fmt 为 std::chars_format::hex ,则不允许前缀 “0x” 或 “0X” (字符串 “0x123” 分析为值 “0” 和未分析的剩余 “x123” )。 任何情况下,按照 std::round_to_nearest 舍入后,结果值是至多二个最接近匹配模式的字符串的值的浮点值之一。返回值类型(见后述返回值)。 std::from_chars_result 无基类或 ptr 、 ec 及隐式声明的特殊成员函数以外的成员。 参数 first, last - 要分析的合法字符范围 value - 存储被分析值的输出参数,若分析成功 base - 使用的整数基底: 2 与 36 间的值(含上下限)。 fmt - 使用的浮点格式, std::chars_format 类型的位掩码 返回值 成功时,返回 from_chars_result 类型的值,其 ptr 指向首个不匹配模式的字符,或若所有字符皆匹配则指向拥有等于 last 的值,其 ec 被值初始化。 若无可匹配的模式,则返回 from_chars_result 类型的值,其 ptr 等于 first 且 ec 等于 std::errc::invalid_argument 。不修改 value 。 若模式匹配,但被分析值不在 value 的类型所表示的范围内,则返回 from_chars_result 类型的值,其 ec 等于 std::errc::result_out_of_range 且 ptr 指向首个不匹配模式的字符。不修改 value 。 示例代码 #include #include #include #include #include struct StructBind { int a; std::string b; }; StructBind Test(const int a, const std::string& b) { StructBind ss; ss.a = a; ss.b = b; return ss; } /* std::to_chars 通过成功填充范围 [first, last) ,转换 value 为字符串,要求 [first, last) 是合法范围。 1) 整数格式化函数: value 以给定基底 base 转换成数位的字符串(无冗余的前导零)。范围 10..35 (含上下限)中的数字被表示成小写字母 a..z 。若值小于零,则表示以负号起始。库提供所有有符号及无符号整数和 char 类型作为参数 value 类型的重载。 2) bool 的重载被删除。 to_chars 拒绝 bool 类型参数,因为假如允许则结果会是 "0"/"1" 而非 "false"/"true" 。 3) 如同用 std::sprintf 于默认( "C" )本地环境转换值为字符串。转换指定符是 f 或 e ,根据最短表示方式的要求选择(两者相当时优先选择 f ):字符串表示由小数点(若存在)前至少有一位,且用对应的 std::from_chars 分析该表示能准确恢复值的,最小数量的字符组成。若有数个这种表示,则选择到 value 的差最小者,用根据 std::round_to_nearest 的舍入解决任何剩余倾向 4) 同 (3) ,但若 fmt 为 std::chars_format::fixed 则如同对应 printf 的转换指定为 f ,若 fmt 为 std::chars_format::scientific 则为 e ,若 fmt 为 std::chars_format::hex 则为 a (但结果无前导 "0x" ),且若 fmt 为 chars_format::general 则为 g 。 5) 同 (4) ,除了精度以参数 precision 指定,而非以最短表示要求。 6) 返回类型(见后述返回值)。 std::to_chars_result 无基类或 ptr 、 ec 及隐式声明的特殊成员函数以外的成员。 参数 first, last - 要写入的字符范围 value - 要转换到其字符串表示的值 base - 使用的整数基底: 2 与 36 间的值(含上下限)。 fmt - 使用的浮点格式, std::chars_format 类型的位掩码 precision - 使用的浮点精度 返回值 成功时,返回 to_chars_result 类型的值,其 ec 等于值初始化的 std::errc ,且其 ptr 是指向被写入字符尾后一位置的指针。注意该字符串不是空终止的。 错误时,返回 to_chars_result 类型的值,它在 ec 保有 std::errc::value_too_large 于 ,在 ptr 保有 last ,并于范围 [first, last) 中留下未指定状态的内容。 std::from_chars 按照后述模式分析字符序列 [first,last) 。若无字符匹配模式或若按照分析匹配字符获得的值不能以 value 的类型表示,则不修改 value ,否则将匹配模式的字符转译成算术值的文本表示,并将值存储于 value 。 1) 整数分析函数:期待等同于 std::strtol 于默认( "C" )本地环境所使用者相同的模式,并给定非零整数底,除了 对底 16 不识别 "0x" 或 "0X" 前缀 仅识别负号(不识别正号),而且只针对 value 的有符号整数类型。 库为所有有符号和无符号整数类型和 char 提供重载,这些类型是参数 value 的被引用类型。 2-4) 浮点分析函数:期待期待等同于 std::strtod 于默认( "C" )本地环境所使用者相同的模式,除了 不识别指数外的正号(在起始位置只允许出现负号) 若 fmt 设置了 std::chars_format::scientific 而无 std::chars_format::fixed ,则要求指数部分(否则可选) 若 fmt 设置了 std::chars_format::fixed 而无 std::chars_format::scientific ,则不允许可选的指数部分 若 fmt 为 std::chars_format::hex ,则不允许前缀 "0x" 或 "0X" (字符串 "0x123" 分析为值 "0" 和未分析的剩余 "x123" )。 任何情况下,按照 std::round_to_nearest 舍入后,结果值是至多二个最接近匹配模式的字符串的值的浮点值之一。 5) 返回值类型(见后述返回值)。 std::from_chars_result 无基类或 ptr 、 ec 及隐式声明的特殊成员函数以外的成员。 参数 first, last - 要分析的合法字符范围 value - 存储被分析值的输出参数,若分析成功 base - 使用的整数基底: 2 与 36 间的值(含上下限)。 fmt - 使用的浮点格式, std::chars_format 类型的位掩码 返回值 成功时,返回 from_chars_result 类型的值,其 ptr 指向首个不匹配模式的字符,或若所有字符皆匹配则指向拥有等于 last 的值,其 ec 被值初始化。 若无可匹配的模式,则返回 from_chars_result 类型的值,其 ptr 等于 first 且 ec 等于 std::errc::invalid_argument 。不修改 value 。 若模式匹配,但被分析值不在 value 的类型所表示的范围内,则返回 from_chars_result 类型的值,其 ec 等于 std::errc::result_out_of_range 且 ptr 指向首个不匹配模式的字符。不修改 value 。 */ int main() { std::array str; // c++ 17 if ( ; ) int a{ 1 }, b{ 0 }; if (a = b; 0 == a) std::cout "123.456"}; double value{ 0 }; // from_chars if (auto [p, ec] = std::from_chars(str2.data(), str2.data() + str2.size(), value, std::chars_format::general); ec == std::errc()) { std::cout


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3