int,char,char*,string的相互转化(共五对 类型相互转化)上

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29567701/article/details/80787464

int,char,char*,string的相互转化(共五对 类型相互转化)上

本文是借助了,网上的资料,对int,char,char*,string之间的转化做了比较全面的汇总,希望大家喜欢。
具体借用的地方写了链接。
共五对 类型相互转化: 1.int 与 string; 2.int 与 char; 3.int 与 char[]; 4.string 与 char; 5.string 与 char[]。
1、 int 与 string ////////////////////////////////////////////////////////////////////////////

1.1 int -> string
C++11标准增加了全局函数std::to_string:

string to_string (int val);
eg: 
int a=5;
string s=to_string(a);

1.2 string -> int

1.2.1 string中的字符串整体 变为 int
//https://blog.csdn.net/u010510020/article/details/73799996
//C++中int与string的相互转换
共三种方法:采用标准库中atoi函数,、 使用std::stoi/stol/stoll等等函数、采用sstream头文件中定义的字符串流对象来实现转换。
eg: string s=”123”; 转换完之后: int n=123;
(1) 采用标准库中atoi函数,对于其他类型也都有相应的标准库函数,比如浮点型atof(),long型atol()等等
eg:

string s = "12";   
int a = atoi(s.c_str()); 

(2) 使用std::stoi/stol/stoll等等函数
stoi() 功能:string -> int
// (2.1) s中 只有十进制数 写成的字符
eg:

string s = "12";   
int a = stoi(s); 

// (2.2)s中有除0-9之外的其他字符出现时,(并且 十进制数写成的字符 出现在字符串 在开始位置)使用下列情况:

string s = "2001, A Space Odyssey";
string::size_type sz;  
int m_dec=stoi(s,&sz);//只取 string中 前sz个字符 转换为 int 
//sz智能判断 string中 最前面连在一起的字符是否 10进制数,是的话,将该十进制数所占的字符个数返回给sz(eg:此题,sz=4)

// (2.3) 16进制字符串 -> int,

  string str_hex = "40c3";
  int i_hex = stoi (str_hex,nullptr,16);//16进制

// (2.4) 2进制字符串 -> int,

  string str_bin = "10010110001";
  int i_bin = std::stoi (str_bin,nullptr,2);

// (2.5) 任意进制字符串 -> int,(智能判断string 的进制)

  string str_auto = "0x7f";
  int i_auto = std::stoi (str_auto,nullptr,0);

(3) 采用sstream头文件中定义的字符串流对象来实现转换
eg:

istringstream is("12"); //构造输入字符串流,流的内容初始化为“12”的字符串  //头文件 sstream.h
int i; 
is >> i; //从is流中读入一个int整数存入i中

1.2.2 string中的字符串 按位从左到右 逐位变为 int
eg: string s=”123”; 转换完之后: int a[]={1,2,3};
函数: a[i] = (int)(s[i] - '0');
eg:

    string s = "11111111111111111111111101101100";
    cout << "s.size() = " << s.size() << endl;
    int sz = s.size();
    int a[32] = {};
    for (int i = 0; i < sz; ++i)
        a[i] = s[i] - '0';

由于博客篇幅限制,2、int 与 char 3、 int 与 char[] 4、string 与 char 5、string 与 char[] 之间的类型转化
见下一篇博客: int,char,char*,string的相互转化(共五对 类型相互转化)下

猜你喜欢

转载自blog.csdn.net/qq_29567701/article/details/80787464