温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++中字符串与整型及浮点型转换的示例分析

发布时间:2021-09-13 13:04:08 来源:亿速云 阅读:150 作者:小新 栏目:开发技术

这篇文章主要介绍了C++中字符串与整型及浮点型转换的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、string 和 char []

1. string 转 char []

string 是一个类,而 char [] 的变量名本质上是一个地址,咋一看这俩好像不太好转换。

但是事实上我们正是可以通过地址的方式将string 中的值整体地迁移到 char [] 中:

#include <string.h> #include <iostream> using namespace std; int main() {     string s = "123.123";     char a[101];     strcpy(a, s.c_str());     // strcpy(a, s.data());  // 与上方语句等价,任选其一即可     cout << a << endl;     // 虽然传递的是地址,但是程序会将内容直接复制到 char [] 中,所以此处改变s不影响a     s = "456.456";     cout << a << endl;     return 0; }

输出内容:

123.123
123.123

2. char [] 转 string

代码:

#include <bits/stdc++.h> using namespace std; int main() {     char a[100] = "123.123";     string s = a;     cout << s;     return 0; }

二、char [] 与数字互转

1. char [] 转整型和浮点型

#include <stdlib.h> #include <iostream> using namespace std; int main() {     char a_chars[101] = "123.123";     int a_int = atoi(a_chars);     double a_double = atof(a_chars);     cout << a_int << endl;     cout << a_double << endl;     return 0; }

输出:

123
123.123

用到了头文件 stdlib.h 中的 atoi() atof() 两个函数

当然这两个函数作为标准库成员,除了可以像上面这段代码这样完成强制类型转换,处理一些特殊情况也是完全OK

#include <stdlib.h> #include <iostream> using namespace std; int main() {     char a_chars[101] = "00123";     int a_int = atoi(a_chars);     cout << a_int << endl;     char b_chars[101] = "-013.470";     double b_double = atof(b_chars);     cout << b_double << endl;     return 0; }

输出:

123
-13.47

如果数字较大需要转 long long long ,则使用的函数为 atol() atoll() ,用法与 atoi() 相同:

#include <stdlib.h> #include <iostream> using namespace std; int main() {     char a_chars[101] = "00123";     long a_long = atol(a_chars);  // long     cout << a_long << endl;     long long a_long_long = atoll(a_chars);  // long long     cout << a_long_long << endl;     return 0; }

2. 整型和浮点型 转char []

#include <stdio.h> using namespace std; int main() {     char a[1001];     sprintf(a, "%.10lf", 3.1415926535);     printf("%s", a);     return 0; }

绝对没有比这更香的操作了

printf 输出到终端,sprintf 可以直接输出到字符串中。如果字符串中有内容会覆盖写入,类似于写文件

另外 to_string() 函数可以胜任这项工作

警告:这个函数没有测试过比赛是否可用,请谨慎选择!!

#include <iostream> using namespace std; int main() {     string s = to_string(123);     cout << s << endl;     return 0; }

3. 整型转 char [] (特殊函数实现)

警告!下面这段代码只有win能用,比赛都是不行的!!

看代码:

#include <stdlib.h> #include <iostream> using namespace std; int main() {     int INT = 123;     long LONG = 123456;     long long LONG_LONG = 123456789;     char s[16] = {0};     itoa(INT, s, 10);  // 要转换的数,存放结果的字符串,结果进制数(下同)     cout << s << endl;     ltoa(LONG, s, 10);     cout << s << endl;     lltoa(LONG_LONG, s, 10);  // 这里编译时有warning,原因不详     cout << s << endl;     return 0; }

输出:

123
123456
123456789

atoi() atol() atoll() 反转一下就有了 itoa() ltoa() lltoa() , 还是比较好记的。

itoa() 为例,他接受三个参数,其中第三个表示输出字符串中使用的进制。这又可以在进制转换上帮我们大忙!

#include <stdlib.h> #include <iostream> using namespace std; int main() {     int INT = 12;     char s[16] = {0};     itoa(INT, s, 2);  // 12转二进制     cout << s << endl;     itoa(INT, s, 8);  // 转八进制     cout << s << endl;     itoa(INT, s, 16);  // 十六进制     cout << s << endl;     return 0; }

输出:

1100
14
c

再次警告!上面这段代码只有win能用,比赛都是不行的!!

提一嘴:文中用到了 s.c_str() 的写法。如果你需要使用 printf() 输出 string 类型的字符串,也需要这样:

#include <stdio.h> #include <string.h> using namespace std; int main() {     string str = "123";     printf("str:%s", str.c_str());     // printf("str:%s", str);  // 这样写真的不行       return 0; }

感谢你能够认真阅读完这篇文章,希望小编分享的“C++中字符串与整型及浮点型转换的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI