gpt4 book ai didi

c++ - 真正的位置字符串格式?

转载 作者:太空狗 更新时间:2023-10-29 21:50:30 25 4
gpt4 key购买 nike

(注意:我知道 Boost.Format,我正在寻找一种更好的方法来执行以下操作。)
首先是一个用例示例:在某些国家/地区,您通过先称呼他/她的姓氏和最后称呼他/她的名字来命名一个人,而在其他国家/地区则恰恰相反。

现在,对于我的代码,我目前通过以下方式使用 Boost.Format 解决了这个问题:

#include <boost/format.hpp>
#include <iostream>
#include <stdlib.h>
#include <utility>

int main(){
using namespace boost;

int pos1 = 2, pos2 = 1;
char const* surname = "Surname", *forename = "Forename";

// decision on ordering here
bool some_condition = false;

if(some_condition)
std::swap(pos1,pos2);

char buf[64];
sprintf(buf,"Hello %c%d%c %c%d%c",'%',pos1,'%','%',pos2,'%');
// buf == "Hello %[pos1]% %[pos2]%"; with [posN] = value of posN

std::cout << format(buf) % surname % forename;
}

现在,我宁愿这样,即 format 行中的所有内容:

std::cout << format("Hello %%1%% %%2%%") % pos1 % pos2 % surname % forename;

但遗憾的是,这不起作用,因为我得到了一个很好的解析异常。

是否有任何库具有真正的位置格式?或者甚至是我不知道的使用 Boost.Format 实现此目的的方法?

最佳答案

在我看来,Boost . Spirit . Karma是权威的现代输出格式化库。

关于c++ - 真正的位置字符串格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com