原始到char **

时间:2012-07-13 07:34:08

标签: c++ pointers c-strings

我正在尝试将“char **”传递给另一个函数(我想要使用的函数需要将该形式作为参数),但我所拥有的是一个双精度数组。 我一直试图找到一些方法将双打转换为C字符串并收集或连接它们,但是......我正在四处奔波,除了编译器错误之外没有任何地方。 我发布了这些代码,但这并不是垃圾邮件。

任何人都碰巧知道如何获取7个双倍值并获得它们的char **?

2 个答案:

答案 0 :(得分:1)

如果你正在使用C,一个选项是分配char缓冲区并调用snprintf()来构建来自双精度的字符串值,就像将字符串打印到控制台一样(例如格式)字符串,例如"%f"后跟值。)

如果可以使用C ++,std::ostringstream类具有类似的效果(<sstream>标题);您可以<<数值,调用str()创建std::string,最后在c_str()对象上调用string以获得char* }。可以将这些指针放入临时C数组中以生成char**

答案 1 :(得分:0)

如果我正确理解了这种情况:

让我们声明你的函数f:

int f(const int n, const double* values, char** out_words);

第一个参数n是双数的数,值是输入的双数,out_words是你要写数字的C字符串的数组。

我假设out_words正确分配了至少n个指针,每个指针指向一个足够大的字节来保存数字。

所以函数体可能是这样的:

#include <string.h>
int i;
for (i=0; i<n; ++i) {
    sprintf(out_words[i], "%g", values[i]);
}