kug*_*uga 16 c++ printf string-view c++17
我是 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;
}
Run Code Online (Sandbox Code Playgroud)
(或者将它与任何其他 printf 风格的函数一起使用?)
Mar*_*k R 18
这是一个奇怪的要求,但有可能:
std::string_view s{"Hallo this is longer then needed!"};
auto sub = s.substr(0, 5);
printf("=%.*s=\n", static_cast<int>(sub.length()), sub.data());
Run Code Online (Sandbox Code Playgroud)
https://godbolt.org/z/nbeMWo1G1
正如您所看到的,您已经接近解决方案了。
eer*_*ika 10
您可以使用:
assert(sv.length() <= INT_MAX);
std::printf(
"%.*s",
static_cast<int>(sv.length()),
sv.data());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6187 次 |
| 最近记录: |