C/C++ 中 string、char 以及 int 各数据类型的转换应用:

一、string  与  char 之间相转换:

头文件一般为:

#include <stdlib.h>

#include <string>

1、string 转成 const  char*

string str = "abcd";

const  char*  m = str.c_str( );

2、const  char*  转成 string

const  char*  m = "abcd";

string (m);

3、string 转到 char*

string str = "abcd";

char*  m ;

const  int len = str.length( );

m = new  char[len + 1];

strcpy(m, str.c_str( ));

4、char*  转到  string

char*  m = "abcd";

string (m);

5、const  char*   转到  char*

const  char*  m = "abcd";

char*  mc = new  char[512];   // 需保证空间足够

strcpy(mc, m); 

二、string  与  int 之间相转换:

头文件一般为:

#include <stdlib.h>

#include <string>

#include <iostream>

using namespace std;

1、int  转到  string

(C++11  标准库增加了全局函数  std::to_string)

(1) string to_string (int val);

(2) string to_string (long val);

(3) string to_string (long long val);

(4) string to_string (unsigned val);

(5) string to_string (unsigned long val);

(6) string to_string (unsigned long long val);

(7) string to_string (float val);

(8) string to_string (double val);

(9) string to_string (long double val);

eg: int n = 10;

      string str = to_string(n);

2、string  转到  int

(可以使用  std::stoi、std::stol、std::stoll 等函数)

eg1:  

string  str = "2018abcd";

int i_dec = std::stoi(str, &sz);

int j_hex = std::stoi(str, nullptr, 16);

int k_bin = std::stoi(str, nullptr, 2);

int l_auto = std::stoi(str, nullptr, 0);

eg2:

string  s = "27";

int  n = atoi(s.c_str( ));

三、char  与  int 之间相转换:

头文件一般为:

#include "stdlib.h"

#include "stdio.h"

1、char  转到  int

char  s = '7';

int d = (int)(s - '0');

2、int  转成  char

int  d = 8;

char s = (char)(d + '0');

3、字符串转换成  int (C语言库函数,atoi)

char  p[ ] = "521";

long  a = atoi(p);

4、int  转成 字符串型

int  num = 1314;

char  str[100];

itoa(num, str, 10);  // 10表示以 十进制转化,其他进制类似

(itoa()函数非C标准库,而是 windows下扩展,标准库中有 sprintf,功能更强大,用法类似 printf)

int  n = 5211314;

char  s[100];

sprintf(s, "%d", n);

5、char*  转成  int

char*  p = "123";

int  x;

x = atoi(p);   // 若char*  p = "123.456";   则,x = atof(p);

(函数原型:int atoi(const char *nptr);atoi() 会扫描参数字符串 nptr ,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。)


参考:https://www.cnblogs.com/wxmdevelop/p/4567857.html

          https://blog.csdn.net/u010510020/article/details/73799996

          https://blog.csdn.net/chen372901/article/details/52102074/

猜你喜欢

转载自blog.csdn.net/m0_37943070/article/details/81021920