c - 在 C 中执行大量字符串连接?

标签 c string concatenation string-concatenation

我正在将一些代码从 Java 移植到 C,到目前为止一切顺利。

但是,我在 Java 中有一个特殊的函数可以自由使用 StringBuilder,如下所示:

StringBuilder result = new StringBuilder();
// .. build string out of variable-length data
for (SolObject object : this) {
    result.append(object.toString());
}
// .. some parts are conditional
if (freezeCount < 0) result.append("]");
else result.append(")");

我知道 SO 不是代码翻译服务,但我不要求任何人翻译上面的代码。

我想知道如何在 C 中有效地执行这种类型的大量字符串连接。它主要是小字符串,但每个字符串都由一个条件确定,所以我不能将它们组合成一个简单的 sprintf 打电话。

我怎样才能可靠地进行这种类型的字符串连接?

最佳答案

将多个“对象”转换为字符串的一种相当“聪明”的方法是:

 char buffer[100];
 char *str = buffer;
 str += sprintf(str, "%06d", 123);
 str += sprintf(str, "%s=%5.2f", "x", 1.234567);

这是相当有效的,因为 sprintf 返回复制的字符串的长度,所以我们可以将 str 向前“移动”返回值,并继续填充。

当然,如果有真正的 Java 对象,那么您将需要弄清楚如何将 Java 风格的 ToString 函数制作成 C 的 printf 系列中的“%somethign”。

关于c - 在 C 中执行大量字符串连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14268928/

相关文章:

javascript - 给定一个字符串,将每个单词的第一个字母移动到每个单词的末尾,然后将 "ay"添加到每个单词的末尾并返回一个新字符串 - JavaScript

python - 有效地连接地址行

c - 带有警告的饱和算术问题

c - fork child 还是线程?

c++ - 重新分配的性能

c# - 快速将字符串复制到字符数组

recursion - Clojure 递归函数

c - 分配某个变量后,双指针的地址被删除

c - 如何将字符缓冲区中的十六进制地址转换为写入内存

php - str_replace ('\"' ,'' ,$str) 不在服务器上工作为什么?