如何解决使用 {fmt} 引用一个字符串
有什么办法可以打印出使用 {fmt} 引用的字符串吗?
fmt::print("Hello {}!","Terens");
我希望代码打印 Hello "Terens"!
而不仅仅是 Hello Terens!
。
编辑:我想使用 API 来打印事先未知的不同数据(我正在为库编写此代码,因此当数据为 std::string
或 std::string_view
时,我特别想要带引号的输出.
解决方法
您可以在格式字符串中将“{}”括在引号中或使用 std::quoted
。例如 (https://godbolt.org/z/f6TTb5):
#include <fmt/ostream.h>
#include <iomanip>
int main(){
fmt::print("Hello {}!",std::quoted("Terens"));
}
输出:
Hello "Terens"!
,
我想使用 API 来打印事先未知的不同数据(我正在为库编写这个,所以当数据是 std::string 或 std::string_view 时,我特别想要一个带引号的输出。
以下代码:
#include <fmt/core.h>
template<typename T>
const T& myprint_get(const T& t) {
return t;
}
std::string myprint_get(const std::string& t) {
return "\"" + t + "\"";
}
template<typename ...T>
void myprint(const char *fmt,T... t) {
fmt::print(fmt,myprint_get(t)...);
}
int main() {
myprint("{} {}",std::string("string"),5);
}
"string" 5
应该足以让您入门。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。