[英]how can i assign float value to char* c[] array
我有字符串,整数,浮点值,并试图将这些值分配给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 *'的非法显式转换,有人打电话给我怎么分配?
在C ++中:
#include <string>
std::string arr[] = { std::to_string(1000),
"helloo",
std::to_string(2.345f),
std::to_string(32760) };
您可以使用arr[0].c_str()
等获取char const *
s。
你不能只投那些类型,并期望得到有用的结果。 强制转换是一种最小的操作,可以以某些预定义的方式转换数据,但是(例如)它不会(例如)智能地将整数转换为字符串表示形式。
这就是您的编译器抱怨的原因。
如果要使用数字数据的字符串表示形式,则必须进行类似的转换,例如:
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样式的字符串,因为该语言提供了令人印象深刻的真实字符串类型。 与new/delete
和许多其他方面相反, malloc/free
也是如此。
问题通常应标记为C或C ++,很少同时使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.