精华内容
下载资源
问答
  • 就是,不用java的系统函数,把char转换成double,java菜鸟求帮忙~
  • char转换为doublechar* chaValue = "116.397380;39.908395";double x = 0.0; double y = 0.0; sscanf(chaValue, "%lf;%lf", &x, &y);int转换为charint m_btCommPort = 1; int m_dwBaudrate = 4800;CString ...

    char转换为double
    char* chaValue = "116.397380;39.908395";
    double x = 0.0;
     double y = 0.0;
     sscanf(chaValue, "%lf;%lf", &x, &y);

    int转换为char
    int m_btCommPort = 1;
     int m_dwBaudrate = 4800;
    CString strCommPort;
     strCommPort.Format("%d", m_btCommPort);
     CString strBaudrate;
     strBaudrate.Format("%d", m_dwBaudrate);
     CString chaValueString = strCommPort + ";" + strBaudrate;
     int length = chaValueString.GetLength();
     char* chaValue = new char[length];
     chaValue = chaValueString.GetBuffer(length);


    CString title = "我是六子";
    char* pCh = title.GetBuffer(title.GetLength());

     

    比如说我们用了CString str="126";假如说这个数据是从edit控件等地方取得;那么我们需要int类型来计算;

    就有了

    int a;

    sscanf(str,"%d",&a);

    //这个时候我们已经将126赋值给a了;a 的值就是126;

    输出之:

    printf("%d",a);

    那么就OK了;

    再有

    CString str="126abc";

    int a;

    char b[10];

    memset(b,0,10);

    sscanf(str,"%d%s",&a,b);

    输出之:

     printf("%d/n",a);
     printf("%s/n",b);

    容易和scanf混淆;

    Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );

    int scanf( const char *format [,argument]... );

      说明:

      sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。

    2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。

      sscanf("123456 ", "%4s", buf);

      printf("%s/n", buf);

      结果为:1234

      3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。

      sscanf("123456 abcdedf", "%[^ ]", buf);

      printf("%s/n", buf);

      结果为:123456

      4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。

      sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);

      printf("%s/n", buf);

      结果为:123456abcdedf

      5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。

      sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);

      printf("%s/n", buf);

      结果为:123456abcdedf

      6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中

      sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);

      printf("%s/n", buf);

      结果为:12DDWDFF

      7、给定一个字符串““hello, world”,仅保留world。(注意:“,”之后有一空格)

      sscanf(“hello, world”, "%*s%s", buf);

      printf("%s/n", buf);

      结果为:world

      %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了

      如果没有空格则结果为NULL。

      sscanf,表示从字符串中格式化输入

      上面表示从str中,输入数字给x,就是32700

      久以前,我以为c没有自己的split string函数,后来我发现了sscanf;一直以来,我以为sscanf只能以空格来界定字符串,现在我发现我错了。

      sscanf是一个运行时函数,原形很简单:

      int sscanf(

      const char *buffer,

      const char *format [,

      argument ] ...

      );

     

    展开全文
  • char转换为double;int转换为char

    千次阅读 2008-01-23 15:03:00
    char转换为doublechar* chaValue = "116.397380;39.908395";double x = 0.0; double y = 0.0; sscanf(chaValue, "%lf;%lf", &x, &y);int转换为charint m_btCommPort = 1; int m_dwBaudrate = 4800;CString ...
    char转换为double
    char* chaValue = "116.397380;39.908395";
    double x = 0.0;
     double y = 0.0;
     sscanf(chaValue, "%lf;%lf", &x, &y);

    int转换为char
    int m_btCommPort = 1;
     int m_dwBaudrate = 4800;
    CString strCommPort;
     strCommPort.Format("%d", m_btCommPort);
     CString strBaudrate;
     strBaudrate.Format("%d", m_dwBaudrate);
     CString chaValueString = strCommPort + ";" + strBaudrate;
     int length = chaValueString.GetLength();
     char* chaValue = new char[length];
     chaValue = chaValueString.GetBuffer(length);  
    展开全文
  • char double

    千次阅读 2015-06-04 10:48:03
    #include "stdafx.h" #include void charToDouble(const char* ch, double& res ) { sscanf(ch,"%lf",&res); }int main(int argc, char* argv[]) { char test[256] = "12345.678"; // double x = 0
    #include "stdafx.h"
    #include <stdio.h>
    
    
    void charToDouble(const char* ch, double& res )
    {
        sscanf(ch,"%lf",&res);
    }
    
    int main(int argc, char* argv[])
    {
    
        char test[256] = "12345.678";
    //  double x = 0.0;
    //  sscanf(test,"%lf",&x);  //%f对应float, %lf对应double.
    
        double x;
        charToDouble(test,x);
    
        printf("%.3f\n",x);
        return 0;
    }
    
    展开全文
  • 在项目开发过程中,经常会遇到字符串转换问题,有时候会将字符串型的数字转换数学中的数字,如int、float、double类型等。 本文将总结一下今天在工作过程中将字符串转换成double类型数据的方法,以供大家在开发...

    总第18篇

    在项目开发过程中,经常会遇到字符串转换问题,有时候会将字符串型的数字转换成数学中的数字,如intfloatdouble类型等。 本文将总结一下今天在工作过程中将字符串转换成double类型数据的方法,以供大家在开发过程中参考。

    1.借助C++库函数实现

    库头文件stdlib.h中包含了几个相关的字符串转换函数,如有:atoi()atol()strtod()strtol()等。

    atoi():是将字符串转换成整型的一个函数,其函数原型为int atoi(const char *nptr);
    atol():是将字符串转换为长整型的一个函数,其函数原型为long atol(const char *nptr);
    strtol():也是将字符串转换成长整型的一个函数,其函数原型为long int strtol(const char *nptr,char **endptr,int base);
    strtod():是将字符串转换成浮点数的一个函数,其函数原型为double strtod(constchar*nptr,char**endptr);

    这里主要讲一下strtod()这个函数,它会扫描字符串nptr,跳过前面的空格符,直到遇上数字或正负号才开始转换,到出现非数字或字符结束标志\0时结束,并返回结果。若endptr不为NULL,则会将不符合条件而终止的字符指针由之传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。

    下面是示例代码:

            #include<stdlib.h>
    #include<stdio.h>
    void main()
    {
        char *endptr;
        char a[] = "12345.6789";
        char b[] = "1234.567qwer";
        char c[] = "-232.23e4";
        printf( "a=%lf\n", strtod(a,NULL) );    //a=12345.678900
        printf( "b=%lf\n", strtod(b,&endptr) );  //b=1234.567000
        printf( "endptr=%s\n", endptr );        //endptr=qwer
        printf( "c=%lf\n", strtod(c,NULL) );    //c=-2322300.000000
    }
    
          

    2.自己写函数实现

    对于字符串转换成浮点数,自己动手写一个函数也不是很复杂,其示例如下:

            double stol(const char *str)
    {
        double sum=0,fac=10;
        int negflag=0;
        if(*str)
        {
           if(*str=='-')
            {
                negflag=1;
                str++;
            }
            while(*str!='.' && *str)
            {
                sum=sum*10+int(*str)-48;
                str++;
            }
            str++;
            while(*str)
            {
                sum=sum+(int(*str)-48)/fac;
                fac=fac*10;
                str++;
            }
            if(negflag==1)
                sum=0-sum;
            printf("%18.15lf",sum);
            return sum;
        }
        else
        {
            printf("warning:字符串为空");
            return 0;
        }
    }
    
          

    测试之,如下:

            #include <QCoreApplication>
    #include <stdio.h>
    
    double stol(const char *str);
    
    int main(int argc, char *argv[])
    {
        QCoreApplication aa(argc, argv);
    
        char *str;
        str=(char*)malloc(100*sizeof(char));
        str="-12.894291490077";
        stol(str);
    
        return aa.exec();
    }
    
          

    其输出结果如下图所示:

     

    v2-4329ad89f60987e3658d5ef820b70226_b.jpg

    对于浮点数的打印输出,默认显示6位不数,若想显示更多位小数,可以设置格式化输出。下面列出了一些格式化输出的例子,可供参考。

            #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char c, s[20];
        int a=1234;
        float f=3.141592653589;
        double x=0.12345678912345678;
        strcpy(s, “Hello,World”);
        c=’\x41′;
        printf(“a=%d\n”, a);//按照十进制整数格式输出,显示 a=1234
        printf(“a=%d%%\n”, a);//输出%号 结果 a=1234%
        printf(“a=%6d\n”, a);//输出6位十进制整数 左边补空格,显示 a= 1234
        printf(“a=%06d\n”, a);//输出6位十进制整数 左边补0,显示 a=001234
        printf(“a=%2d\n”, a);//a超过2位,按实际输出 a=1234
        printf(“a=%-6d\n”, a);///输出6位十进制整数 右边补空格,显示 a=1234
        printf(“f=%f\n”, f);//浮点数有效数字是7位,结果 f=3.141593
        printf(“f=6.4f\n”, f);//输出6列,小数点后4位,结果 f=3.1416
        printf(“x=%lf\n”, x);//输出长浮点数 x=0.123457
        printf(“x=%18.16lf\n”, x);//输出18列,小数点后16位,x=0.1234567891234567
        printf(“c=%c\n”, c);     //输出字符 c=A
        printf(“c=%x\n”, c);//以十六进制输出字符的ASCII码 c=41
        printf(“s[]=%s\n”, s);//输出数组字符串s[]=Hello,World
        printf(“s[]=%6.9s\n”, s);//输出最多9个字符的字符串 s[]=Hello,Wor
        return 0;
    }
    
          

    在开发过程中,详细的函数库可以参考:C/C++函数库索引

     

    本文到此结束!

    如果对你有帮助,请随手 点个赞点喜欢!随手点赞,手留余香!

    =======================================================

    欢迎【关注作者、私信作者】。我们一起交流一起进步。

    =======================================================

    展开全文
  • c++ char*int double

    千次阅读 2018-08-31 22:08:21
    正负皆可;靠自己勤劳的双手与智慧...上代码,可以转载。有好的逻辑请留言,万般感谢! double sqrt(double sum,int i) { double root = sum; while (i>...double hexToDec(char *str) { i...
  • Arduino中char数组转double型的坑

    千次阅读 2018-03-23 10:13:33
    进一步的处理需要将char数组转为double,但使用atof函数也好,strtod函数也好都无法得到正确精度的数字。NEMA协议中经纬度格式为:维度:ddmm.mmmmm经度:dddmm.mmmmm最终发现,arduino是8位机,根本不存在double型...
  • // double char, char TCHAR char messageShow[300] = {NULL}; TCHAR messageShowT[300]; sprintf_s( mes
  • char字符串转double浮点函数——strtod

    万次阅读 2017-06-06 11:00:50
    char字符串转double浮点函数——strtod
  • c++ java jstring转char* double转char*

    千次阅读 2017-03-04 23:02:07
    char* jstringToChar(JNIEnv *env, jstring jstr)  {  char * rtn = NULL;  jclass clsstring = env->FindClass("java/lang/String");  jstring strencode = env->NewStringU
  • char* to double

    千次阅读 2013-03-14 19:56:32
    #include #include ...double char_x_to_double(char* input_char) { int flag = 0; double sum = 0.0; double divisor = 10.0; char *p = input_char; if (*input_char) { //所有输入的数值都
  • matlab实现cellstr(元胞数组字符)描述函数代码1输出1代码2输出2 描述 matlab实现cellstr(元胞数组字符) 函数 通过大括号实现 A = A{1} 代码1 A = {'wang',2,3}; B = A{1} C = A{2} D = A{3} 输出1 ...
  • String型数据转换成double

    千次阅读 2017-12-15 15:08:16
    自己实现了一个String转double的方法 public double strToNum(String str){ //字符串分成小数部分和整数部分 String[] split = str.split("\\.");//小数点不能直接当作分隔符,要用"\"转义 String int...
  • 1、首先要确定你的工程字符集用的是多字节而不是unicode才能用下面的方法, 因为vs2008/2010默认使用的是unicode编码. 修改方式为: 在解决方案窗口右键工程名--&...转成int: ;int a = atoi(str.GetBuffer())...
  • Arduino float/double char

    千次阅读 2017-03-07 19:52:42
    dtostrf(),可以轻松实现数据类型from float to ...char* dtostrf(double _val,signed char _width, unsigned char prec, char* _s) 参数说明: _val:要转换的float或者double值。_width:转换后整数部分长度。_pre
  • C double转char字符串

    千次阅读 2019-08-18 21:16:57
    找个double转char字符串的代码,国内搜出来的都是些什么狗屎 翻墙出去,一搜就有几种不错的方法 方法1:使用sprintf https://cboard.cprogramming.com/c-programming/38507-double-string-conversion.html ...
  • C++中Double转Char

    千次阅读 2019-09-24 10:59:19
    自:https://blog.csdn.net/boyixuanbo/article/details/79778266 #include <iostream> #include <string.h> #include <sstream> ...using namespace std;... double freq1=12....
  • 比如说 double a=3.1 ,转换字符串str="3.1"这是正常的, 但如果 double a=0.0000031; 转换字符串str 后变成 3.1E-6 ,能不能str="0.0000031"??怎么呢?
  • CString转换成double变量

    2017-11-17 09:15:16
    默认的ttof函数转double会将小数点后面的省略掉,解决办法可以通过下面的函数实现,中心思想是将CString转化为char*,然后使用atof函数实现转化. double MyTTOL(CString s) { double val = 0; int length = s....
  • 常用数据类型转换CString double char int WCHAR
  • Atmel Studio 6.2集成开发环境编写...在项目中需要把double型数据转换成char型字符串。本想自己写数据转换程序,写之前先上网看看前人们有什么经验,一番搜索发现AtmelStudio 中自带的dtostrf()函数可以实现这一功能
  • 3.1 doublechar* 的相互转换

    千次阅读 2015-05-19 16:28:00
    1. double 转换到char* #include char* SiftMatch::double2str(double data) { char str[256]; sprintf(str, "%.6lf\t", data); //%.6lf\n d=lf return str; } 2. char* 转换到 double
  • Cstring与double char 的转换

    千次阅读 2007-05-15 15:39:00
    Cstring与double char 的转换 
  • C语言中char转换int

    万次阅读 2014-02-28 12:52:19
    1,char型数字转换为int型 char a[] = "32"; printf("%d\n", a[0]-'0');//输出结果为3 ...2,int转化为char ...*********************************** linux c ***************... (1)字符串转换数字,用atoi,atol,
  • wxString转double,int,char*

    千次阅读 2017-07-28 15:41:29
    网上有好多wxString的数据类型转换文章,接下来我通过我在...wxString Double: wxString str=_T("0.0025"); double val; str.ToDouble(&val); Double wxString: double defVal=0.0025; wxString defStr = wxStr
  • 一个字符串转成double类型的数

    千次阅读 2013-02-18 01:40:38
    给一个字符串,比如“-12.05”,转成相应的double类型的数。 分析: 在进行转换的时候,要注意以下问题: 1. 该字符串是否为空 2. 是否该字符串含有符号; 3. 该字符串内是否有非法字符; 4. 小数点的位置...
  • 如何轻松玩Arduino单片机,当我在进行数据转换的时候,遇到了问题,尝试了C语言和C++中的好多函数,都没有达到将float型数据转换为char型的目的。苦苦查阅资料后,终于找到了一个大神级函数!!!dtostrf(),可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 601,883
精华内容 240,753
关键字:

怎么把char转成double