Poe*_*odu 14 c++ string-conversion c++17
http://en.cppreference.com/w/cpp/utility/to_chars
引用没有说明任何内容,但是示例(对我来说)显然使用以null结尾的字符串,否则它怎么能知道在哪里结束,因为std::array::data
只返回一个指针.
#include <iostream>
#include <charconv>
#include <array>
int main()
{
std::array<char, 10> str{};
std::to_chars(str.data(), str.data()+str.size(), 42);
std::cout << str.data();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我无法自己测试,因为AFAIK还没有编译器支持它:https: //en.cppreference.com/w/cpp/compiler_support
编辑:忘记str
用零初始化,但问题仍然相关.
Nic*_*las 19
C++ 17规范没有声明to_chars
添加NUL终结符:
所有命名的函数都通过连续填充范围[ ,]来
to_chars
转换value
为字符串,其中[ ,)必须是有效范围.如果构件的返回值是这样的值,当转换为,是,转换成功和构件是写入的字符的一过去最结束指针.否则,成员具有值,成员具有值,并且未指定范围[ ,)的内容.first
last
first
last
ec
bool
false
ptr
ec
errc::value_too_large
ptr
last
first
last
关于该段落中的NUL终结符或专门定义单个to_chars
重载行为的段落,没有任何说明.因此,它没有写一个.
该示例有效,只要to_chars
不产生超过9个字符.由于str
初始化为所有NUL字符,因此未写入的任何内容str
都将保留为NUL字符.
为此,提出它的原始论文P0067R0明确指出to_chars
函数不应该NUL终止字符串.