当前位置:  开发笔记 > 编程语言 > 正文

C++的String.Format

如何解决《C++的String.Format》经验,为你挑选了4个好方法。

寻找像.NET的String.Format这样的函数的C++实现.显然有printf和它的品种,但我正在寻找一些位置如下的东西:

String.Format("你好{0}.你已经{1}岁了.感觉{1}怎么样?",姓名,年龄);

这是必要的,因为我们将尝试更轻松地本地化我们的应用程序,并将翻译器{0}和{1}放在句子中的任何位置比给他们%s,%d,%要容易得多d必须按其顺序排列.

我认为搜索和替换变量输入(va_start,va_end等)是我最终要构建的,但如果已经有一个可靠的解决方案,那将是首选.

谢谢 :)



1> Eddie Parker..:

看看boost格式库.



2> shoosh..:

QT的QString允许你这样做:

QString("Hi there %1. You are %2 years old. How does it feel \
         to be %2?").arg(name).arg(age)


QtCore支持使用QObject :: tr进行国际化.它返回带有%1,%2等占位符的QString.它还允许一个特殊的%n,它允许单词正确复数.

3> Logan Capald..:

信不信由你,printf和朋友支持位置论证.

 #include 

 int main() {
   char *name = "Logan";
   int age = 25;
   printf("Hi there %1$s, you are %2$d years old. How does it feel to be %2$d?\n", name, age);
  return 0;
 }


关于标准的奇妙之处在于有很多可供选择.例如http://www.opengroup.org/onlinepubs/000095399/functions/printf.html它是XSI标准.
如果您不想打印它,请使用sprintf/snprintf.

4> Christof Sch..:

您可以查看FastFormat -library.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有