我刚接触C++17和std::string_view
,了解到它们不是以空字符结尾的字符串类型,必须小心处理。
这样printf()一个字符串是否正确?
#include<string_view>
#include<cstdio>
int main()
{
std::string_view sv{"Hallo!"};
printf("=%*s=\n", static_cast<int>(sv.length()), sv.data());
return 0;
}
(或者将其与任何其他printf风格的函数一起使用?)
printf
? - Marek Rstring_view
,则它可以是非空字符结尾的。因为 "Hallo" 是以空字符结尾的,所以sv
也是。 - NathanOliverfmt
库,它可以很容易地将使用printf
的代码转换。 - Marek R