• C++ 中 int、 char、 char*、 const char*、 string之间的转换


    1. char* to string

     

    string s(char *);
    注:在不是初始化的地方最好用assign().
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    2. string to const char*
    string a="strte";
    const char* r=a.c_str();
    注意是const的。还要转到char*:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2.2. const char* to char*
    const char* r="123";
    char   *p1   =   new   char[strlen(r)+1];
    strcpy(p1,r);
    附:
    http://hi.baidu.com/cfans/blog/item/06970ef4b671f366dcc4745d.html
    这个页面是具体讲述区别的。
    ·············································································································
    3. cstring to string
    vs2005 Unicode下:
    CStringW   str(L"test");  
    CStringA   stra(str.GetBuffer(0));  
    str.ReleaseBuffer();      
    std::string   strs   (stra.GetBuffer(0));  
    stra.ReleaseBuffer();

    非Unicode下:
    CString cs("test");
    std::string str=cs.getBuffer(0);
    cs.ReleaseBuffer();

    注:GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++

    4. double ,int to string
    #include <sstream>
    using namespace std;

    stringstream ss;
    string result;
    long n=11111;
    stream << n; //从long型数据输入
    stream >>result; //转换为 string


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

    5.char* to int, double ,long

    char *s; double x; int i; long l;

    s = " -2309.12E-15";
    x = atof( s );
    printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

    s = "7.8912654773d210";
    x = atof( s );
    printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

    s = " -9885 pigs";
    i = atoi( s );
    printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

    s = "98854 dollars";
    l = atol( s );
    printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
    ------------------------------------------------------------------------------------------------
    6. string to int ,long ,double            
    int s;
    string str="123";
    stringstream ss;
    ss<<str;//从str输入
    ss>>s;//输出到int
    ss.clear();


    ——————————————————————————————————————————
    7. date to string
    #include <time>
    using namespace std;

    char dateStr [9];
    char timeStr [9];
    _strdate( dateStr);
    printf( "The current date is %s \n", dateStr);
    _strtime( timeStr );
    printf( "The current time is %s \n", timeStr);

    --------实践证明是正确的版本--------------------------------------------------------------

    #include <iostream>
    #include <ctime>
    #include <cerrno>
    
    int main()
    {
         //Find the current time
         time_t curtime = time(0);
         
          //convert it to tm
          tm now=*localtime(&curtime);
        
         //BUFSIZ is standard macro that expands to a integer constant expression
         //that is greater then or equal to 256. It is the size of the stream buffer
         //used by setbuf()
         char dest[BUFSIZ]={0};
        
         //Format string determines the conversion specification's behaviour
         const char format[]="%A, %B %d %Y. The time is %X";
        
         //strftime - converts date and time to a string
         if (strftime(dest, sizeof(dest)-1, format, &now)>0)
           std::cout<<dest<<std::endl;
    
        else
           std::cerr<<"strftime failed. Errno code: "<<errno<<std::endl;
    }

    |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    8.string to cstring

    +++++++++++++++++++++++++++++++++++++++++++++++++++++
    非Unicode下:
    int 转 CString:
    CString.Format("%d",int);
    ...............................
    string 转 CString
    CString.format("%s", string.c_str());
    用c_str()确实比data()要好.
    .......................................
    char* 转 CString
    CString.format("%s", char*);
    CString strtest;
    char * charpoint;
    charpoint="give string a value";
    strtest=charpoint; //直接付值
    .....................................................
    CString 转 int
    CString ss="1212.12";
    int temp=atoi(ss); //atoi _atoi64或atol
    ...................................................................................................................................
    9.在Unicode下的CString to double
    CSting sTemp("123.567");
    double dTemp = _wtof(

  • 相关阅读:
    Codeforces704C. Black Widow
    Codeforces704B. Ant Man
    暑假学习日记2013/8/5
    暑假学习日记2013/7/31
    暑假学习日记2013/7/26
    暑假学习日记2013/7/25
    暑假学习日记2013/7/24
    暑假学习日记2013/7/23
    线性同余方程的解法笔记
    暑假学习日记2013/7/22
  • 原文地址:https://www.cnblogs.com/CoolSummer/p/3025032.html
Copyright © 2020-2023  润新知