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

本文详细介绍了C++中int、char、char*及string类型之间的相互转换方法,包括使用标准库函数、stringstream对象以及C++11新增的to_string等函数进行转换的具体步骤和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/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的相互转化(共五对 类型相互转化)下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值