C++中,如何讲CHAR数组转换成FLOAT型数据。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中,如何讲CHAR数组转换成FLOAT型数据。相关的知识,希望对你有一定的参考价值。
可使用库函数strtod(const char* ptr, char** endptr)或atof(const char *ptr)将char数组转换成float型数据。
当strtod的第二个参数endptr不为NULL时,且ptr中含非法字符,则会将非法字符通过endptr返回。
#include <stdio.h>#include <stdlib.h>
int main()
char buf[10] = "-123.456";
float f = atof(buf); //转换
printf("%f\\n", f);
f = strtod(buf, NULL); //转换
printf("%f\\n", f);
return 0;
参考技术A #include <iostream>
using namespace std;
int main()
float a;
char b[10];
gets(b);
a=atof(b);
cout<<a<<endl;
return 0;
double atof( const char *string );
这个是函数原型 参考技术B strtod
double strtod(char *str,char *endstr) 参考技术C Java与C++的差别
1. Java中boolean类型和int类型不兼容,即不能互相转换,而且boolean型的true和fasle是不能比大小的;
C++中true == 1; false == 0; (true flase) == 1;
2. Java中char型是16位的,即两个字节;
而C++中的char型是1一个字节即8位的。
3. Java中表达式中char、byte、short类型计算时会自动先转换成int型,即两个byte型相加生成的是int型变量。有以下定义byte b1 = 1,b2 = 2,b3;要将b3赋值成b1和b2的和,必须写成b3 = (byte)(b1 + b2);因为b1+b2是int型的,不强制转换类型编译器会报错。
而C中则不会将char、byte、short类型自动转换成int型。
4. Java中常数(即字面值)中,整数是默认int型的,小数是默认double型的。char、byte、short变量可以直接赋值成整数,不改变类型,而long变量赋值时要加上后缀l,float变量赋值小数时要加上后缀f(float赋值不加后缀会报错)。例如long t1 = 20l;float f1 = 2.3f;
C++中的类型转换则不是很严格;
5. Java中控制语句的表达式必须是boolean型的,不能是int型的,因为两者不兼容;
C++则两者都可;
6. Java中没有指针,申明数组时有Type name[];其中[]里面不能填数字。name有length成员表示数组的大小;
C++中数组[]可以填数字进去,一般类型的数组没有length成员。
Java中可以初始化如Type name[] = new Type(), new Type(),…,new Type();其中简单类型的数组(例如int)可以在中直接赋值。
C++中简单类型的
Java中多维数组以二位数组int型为例,int a[][] = new int [2][],即第二维可以先不申明,然后可以申明不规则数组,即a[0] = new int[1]; a[1] = new int[2]; a[3] = new int [3];
C++中高维数组无法动态分配,只能静态分配,因此也无法实现不规则数组
7. Java中继承类中的方法重写时相当于C++中的虚函数,Java中的abstract方法相当于C++中的纯虚函数,Java中含有abstract方法的类必须申明为abstract类,即类前要加上abstract修饰语,此时这个类无法被实例化,而且生成的子类必须重写超类(即父类)的abstract方法,否则子类也不能被实例化,并且要显示地申明为abstract类。C++中不用修饰抽象类。
8. Java中有超类的引用变量可以引用子类的实例,相当于C++基类的指针可以指向派生类的实例。类似的,超类的引用虽然指向了子类,但是在子类中有的成员或者方法却在超类中没有时,超类的引用仍然无法使用。在C++也是如此,使用基类指针生成派生类的对象,但是这个指针指向的成员必须是基类拥有的。
9. Java中String(申明类型时注意S大写)的两个变量str1、str2如果相等,是意味着它们引用的同一个字符串(相当于用同一个内存),若要表示独立的两个变量所含的字符串相同,则String类有方法boolean equals(String str)可以调用。即如果str1.equeals(str)的值为true,则str1与str2所含的字符串相等。String还有一些其他方法:
boolean equals(String str)
如果调用字符串包含的字符序列与str一样,则返回true,
int length()
获取字符串的长度
char charAt(int index)
获取index指定的索引位置的字符
int compareTo(String str)
调用字符串小于str,则返回小于0的数;大于返回大于0的数;相等则返回0
int indexOf(String str)
返回调用字符串中第一个与str匹配的索引,没有匹配则返回-1
int lastIndexOf(String str)
返回调用字符串中最后一个与str匹配的索引,没有匹配则返回-1
C++中如果str1 == str2值为1,则表示str1的字符串与str2的字符串相等,两者可以独立
在C++中,如何把字节数组转换成字符串
字节数组转化为字符串数组只需要做一个判断:检查字节数组最后一个字节是否为0,如果是,则直接复制。否则则需要追加一个为0的字节到末位。示例代码如下:
char* toString(char* data,size_t len,char* str,size_t strLen)//注意strLen>len否则函数结果不可知
if(data[len-1]==0)
strcpy(str,data);
else
memcpy(str,data,len);
str[len]=0;
return str;
参考技术A 在这个数组的最后加一个字节'\0'就变成了char字符串。如果原数组的大小最后没有空位,那就得另声明一个大一点的char数组,然后在最后加一个'\0'。如果是要转换成string型字符串,那如下就行了:
char a[20]='1','s','o';
for(int i=0;i<n;i++)//n是原字符串的长度
string str+=a[i];
这样就把原来的字符数组a里的元素转换成string型字符串str了……追问
我下节课试试着好吧
参考技术B 可以用forchar a[100];
String str;
for(int i=0;i<n;i++)
str[i]=a[i]; 参考技术C char array[]="qwertyuiop";
string str(array); 参考技术D DataIn是BYTE型数组
CString str = CString(DataIn)
以上是关于C++中,如何讲CHAR数组转换成FLOAT型数据。的主要内容,如果未能解决你的问题,请参考以下文章
C语言 数组类型转换,怎样将一个float类型的数组转换成字符(串)数组?