c++ 中double与string之间的转换,char *

/*
 * main.cpp
 *
 *  Created on: Apr 7, 2016
 *      Author: lizhen
 */

#include <iostream>
//#include "MySqrt.h"
#include <math.h>
#include <vector>
#include <typeinfo>
#include <exception>
#include <stdexcept>
#include<string.h>
#include<sstream>
#include<stdio.h>

using namespace std;

class Base{
public:
    Base(){
        cout<<"create the base"<<endl;
    }
    virtual ~Base(){
        cout<<"destroy the base"<<endl;
    }
};
class Derived: public Base{
public:
    Derived(){
        cout<<"derived is created"<<endl;
    }
    virtual ~Derived(){
        cout<<"Derived is destroying"<<endl;
    }
};
//double -->string
string doubleConverToString(double d){
    ostringstream os;
    if(os << d) return os.str();
    return "invalid conversion";
}

//string-->double
double stringConverTodouble(string str){
    istringstream iss(str);

    double  x;
    if(iss >> x) return x;
    return 0.0;
}

//c-function double-->string
string cfunctionDtoS(double d){
    char str[100];
    sprintf(str,"%.3lf",d);
    return str;
}
//c-function string->double
double cfunctionStoD(string str){
    double dd;
    sscanf(str.c_str(),"%lf",&dd);
    return dd;
}

int main() {
    //string-->char*
    string str("string");
    char *p = const_cast<char *>(str.c_str());
    cout<<"string->char*"<<p<<endl;

    //char* -->string
    char *ch = const_cast<char *>("char");//warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]|
    string chstr(ch);
    cout<<"char * -->string"<<chstr<<endl;

    //double&float --->string
    double dd = 3.14;
    string ddstr = doubleConverToString(dd);
    cout<<ddstr<<endl;

    //string--->double&float
    string strp = "3.5555555555";
    double strdd = stringConverTodouble(strp);
    cout<<strdd<<endl;
    cout<<atof(strp.c_str())<<endl;

    //c-function double->string
    string ss = cfunctionDtoS(3.146789);
    cout<<"ss"<<ss<<endl;

    //c-function string->string
    double cdd = cfunctionStoD("3.14259");
    cout<<cdd<<endl;
}

运行结果

1 string->char*string
2 char * -->stringchar
3 3.14
4 3.55556
5 3.55556
6 ss3.147
7 3.14259

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

string-->char*

//string-->char*
    string str("string");
    char *p = const_cast<char *>(str.c_str());
    cout<<"string->char*"<<p<<endl;

char*-->string

//char* -->string
    char *ch = const_cast<char *>("char");//warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]|
    string chstr(ch);
    cout<<"char * -->string"<<chstr<<endl;

===

double/float-->string

string-->double/float

利用c++中 sstream头文件中的方法

==利用 ostringstream 输出流对象,将double输出到string中

方法如下:

//double -->string
string doubleConverToString(double d){
    ostringstream os;
    if(os << d) return os.str();
    return "invalid conversion";
}

==利用istringstream输入流对象,将string中的东西放到double变量中去

方法如下

//string-->double
double stringConverTodouble(string str){
    istringstream iss(str);

    double  x;
    if(iss >> x) return x;
    return 0.0;
}

利用标准c中的stdio.h头文件中的方法

==利用sprintf(str,"%.3lf",dd)方法,将double变量中的字符输出到字符串str中

方法如下:

//c-function double-->string
string cfunctionDtoS(double d){
    char str[100];
    sprintf(str,"%.3lf",d);
    return str;
}

==利用sscanf(str,"%d",&dd)方法,将字符串str中的东西,放到double变量dd中

方法如下:

//c-function string->double
double cfunctionStoD(string str){
    double dd;
    sscanf(str.c_str(),"%lf",&dd);
    return dd;
}

 其他方法

char *itoa(int value, char* string, int radix);   int---->string
同样也可以将数字转字符串,不过itoa()这个函数是平台相关的(不是标准里的),故在这里不推荐使用这个函数。

另外也可以使用atoi(),atol(),atof().可以将string--->int/double/float

参考文档:

http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html

时间: 2024-10-25 15:55:28

c++ 中double与string之间的转换,char *的相关文章

C++中数字与字符串之间的转换,别人的,

C++中数字与字符串之间的转换 1.字符串数字之间的转换 (1)string --> char *   string str("OK");   char * p = str.c_str(); (2)char * -->string   char *p = "OK";   string str(p); (3)char * -->CString    char *p ="OK";   CString m_Str(p);   //或者

Python3中bytes和HexStr之间的转换

1 Python3中bytes和HexStr之间的转换 ByteToHex的转换 def ByteToHex( bins ): """ Convert a byte string to it's hex string representation e.g. for output. """ return ''.join( [ "%02X" % x for x in bins ] ).strip() HexToByte的转换 de

Java中字符串与日期之间的转换

项目过程中,经常遇到需要字符串格式的日期和Date类型的日期之间的相互转换.使用SimpleDateFormat类,可以方便完成想要的转换. SimpleDateFormat能够实现本地化的时间格式化及转换.从选定一个自定义的模式(pattren)开始,模式由已经定义好的 'A' to 'Z' 及 'a' to 'z'字母组成,也可以在模式中引入文本,但要使用’(单括号)括住.下图就是已经定义好的模式字母表: Letter Date or Time Component Presentation

Java中字节与对象之间的转换

近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOutputStream两个输出流,以及ByteArrayInputStream和ObjectInputStream两个输入流. 废话不多说了,直接上代码吧! /** * @FileName: ByteToObject.java * @Package:com.test * @Description: T

Java 中基本类型和字符串之间的转换

Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使用String类的 valueOf() 方法 3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串 再来看,将字符串转换成基本类型有两种方法: 1. 调用包装类的 parseXxx 静态方法 2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱 PS:其他基

Java 带分隔字符串、字符串数组和 ArrayList&lt;String&gt; 之间的转换

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 一.先来认识一下标题说的这三件东西,也许描述的不清楚,但有了下面的例子,就不会有歧义了 1.带分隔字符串是这样的: String seperate

Java中InputStream和String之间的转化

https://blog.csdn.net/lmy86263/article/details/60479350 在Java中InputStream和String之间的转化十分普遍,本文主要是总结一下转换的各种方法,包括JDK原生提供的,还有一些外部依赖提供的.1.InputStream转化为String1.1 JDK原生提供 方法一:byte[] bytes = new byte[0];bytes = new byte[inputStream.available()];inputStream.r

Java中InputStream和String之间的转换方法

源码地址: https://github.com/pnunu/pnunu-io 在Java中InputStream和String之间的转化十分普遍,本文主要是总结一下转换的各种方法,包括JDK原生提供的,还有一些外部依赖提供的. 1.InputStream转化为String 1 JDK原生提供 方法一: byte[] bytes = new byte[inputStream.available()]; inputStream.read(bytes); String str = new Strin

swift中Double转String

swift上手有好几天了.发现swift除了本身的几个基本类型转换,一些比较特殊的数值类型转换需要“桥接”到Objective-C来进行- 代码当然也很简单- var numString = "1.0" var numDouble:Double numDouble = String.bridgeToObjectiveC(numString)().doubleValue //相当于objective-c的" numdouble = [numString doubleValue]