我是C++17和std::string_view
的新手。我了解到,它们不是空终止的,必须小心处理。
这是printf()one的正确方法吗?
#include<string_view>
#include<cstdio>
int main()
{
std::string_view sv{"Hallo!"};
printf("=%*s=\n", static_cast<int>(sv.length()), sv.data());
return 0;
}
(or使用它与其他printf风格的函数?)
3条答案
按热度按时间wlwcrazw1#
您可以用途:
3gtaxfhh2#
关于
string_view
需要记住的是,它永远不会修改底层的字符数组。所以,如果你传递一个C字符串给string_view
构造函数,sv.data()
方法将总是返回 * 相同的 * C字符串。所以,这个特定的案例总是有效的:
zrfyljdw3#
这是一个奇怪的要求,但它是可能的:
https://godbolt.org/z/nbeMWo1G1
正如你所看到的,你已经接近解决方案。