-1

我有字符串、整数、浮点值,并试图将这些值分配给 char* c[] 数组,就像这样。

char *str = "helloo";
int int = 1000;
short st1[]={32760};
float flt = 2.345; 
char*  c [] = {(char*)int1,(char*)str,(char*)flt,(char*)st1};

但是对于浮点数从 'float' 到 'char *' 的非法显式转换, 有人告诉我如何分配吗?

4

2 回答 2

2

您不能只转换这些类型并期望获得有用的结果。强制转换是一种最小操作,可以以某些预定义的方式转换数据,但它不会(例如)智能地将整数转换为其字符串表示形式。

这就是您的编译器抱怨的原因。

如果您想要数字数据的字符串表示,则必须以不同的方式转换它们,例如:

char intStr[30]
sprintf (intStr, "%d", int1);

如果您希望获得所有这些字符串的表示形式,您可以执行以下操作:

char *str = "helloo";
int int1 = 1000;
short st1[]={32760};
float flt = 2.345; 

char mybuff1[50], mybuff2[50], mybuff3[50], mybuff4[50];
sprintf (mybuff1, "%d", int1);
sprintf (mybuff2, "%s", str);
sprintf (mybuff3, "%f", flt);
sprintf (mybuff4, "%d", st1[0]);

char *c [] = {mybuff1, mybuff2, mybuff3, mybuff4);

请注意,尽管 C 和 C++ 具有非常相似的习语,并且如果您坚持使用子集,它们大多是兼容的,但它们不是同一种语言,并且根据您使用的实际语言,做某事的最佳方式会发生巨大变化。

例如,很少需要在 C++ 中使用 C 风格的字符串,因为该语言提供了令人印象深刻的真实字符串类型。同样适用malloc/free于相对new/delete和许多其他方面。

问题通常应标记为 C 或 C++,很少同时标记。

于 2012-08-07T08:20:05.847 回答
2

在 C++ 中:

#include <string>

std::string arr[] = { std::to_string(1000),
                      "helloo",
                      std::to_string(2.345f),
                      std::to_string(32760)    };

你可以使用arr[0].c_str()etc. 来取回char const *s。

于 2012-08-07T08:18:40.703 回答