C++中,如何讲CHAR数组转换成FLOAT型数据。

2024-11-14 17:52:07
推荐回答(4个)
回答1:

可使用库函数strtod(const char* ptr, char** endptr)或atof(const char *ptr)将char数组转换成float型数据。

当strtod的第二个参数endptr不为NULL时,且ptr中含非法字符,则会将非法字符通过endptr返回。

#include 
#include 

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;
}

回答2:

#include
using namespace std;
int main()
{
float a;
char b[10];
gets(b);
a=atof(b);
cout< return 0;
}

double atof( const char *string );

这个是函数原型

回答3:

strtod
double strtod(char *str,char *endstr)

回答4:

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的字符串相等,两者可以独立