const char*、 string、char* 、 int 、double 之间的类型转换

 

1.    const char*(C风格字符串)与 string 之间转换:

             (1) const char* 可以直接对string类型赋值,例如:

                       const char* pchar = "abcdefg";

                       stringstr = pchar;

             (2) string通过 c_str() 函数转换为C风格字符串,例如:

                       string str = "abcdefg";

                       const char* pchar = str.c_str();

2.    const char*(C风格字符串)、string 与 int  、double之间转换:   

             (1) const char* 可以直接通过 atoi()、 atof() 直接转换为int 、double,例如:

    
      const char* pcahr = "2.23";

      int iValue = atoi(pcahr);
      double dbValue = atof(pcahr);

             (2)string通过 c_str() 函数转换为const char* ,然后再通过 atoi()、 atof() 直接转换为int 、double例如:

      string str = "1.23";

      iValue = atoi(str.c_str());
      dbValue = atof(str.c_str());

    (3)int 、double 转化为string , 通过  to_string()   stringstream  例如:               

         #include <iostream>
      #include <sstream>
      #include <iomanip>
      using namespace std;

      double d = 3.1415926535897932384;
      int ii = 108;
      string str = to_string(d);
      cout << str << endl; // 3.141593

      str = to_string(ii);
      cout << str << endl; // 108

      stringstream ss;
      ss << setprecision(15) << d;
      str = ss.str();
      cout << str << endl; //3.14159265358979

 

3.   const char*(C风格字符串)与 char* 之间转换:

               (1) const char*是不能直接赋值到char*的,char* 要开辟新的空间;       

      const char* pchar = "abcdefg";
      int len = strlen(pchar);                   // 计算字符串长度
      char* pc = new char[len + 1];        // 分配存储空间
      strcpy_s(pc, len + 1, pchar);

               (2) char* 到  const char* 直接赋值就可以了;                     

      const char* pchar;

      char pc[] = "abcdefg";

      int len_pc= sizeof(pc) / sizeof(char);

      pchar = pc;

      int len_pchar = strlen(pchar);

                    备注:  char pc[]  的长度为字符长度再加上 字符串结束符 ′\0′;

                                  const char* 的长度则会比 char pc[] 小1,没有包含 字符串结束符 ′\0′。

 

posted @ 2022-08-01 11:04  SusieSnail_SUN  阅读(1217)  评论(0编辑  收藏  举报