字符串和整型的转型

处理三维模型的数据, 经常要从一些文件中读取数据.

先读一行, 再读一个. 拿到手里就是一个string. 

对数据处理要转为浮点型等数据类型. 以下是一些数据类型转化的方法.

1.  字符(char) -> 整型(int)

1 char c = '5';
2 int i = c - '0';

2.  整型(int) -> 字符(char)

1 int i = 8;
3 int j = i+48;  //'0'->ascii->48
2 char c = j;  //'8'

3.  字符串 -> 整型

1 #include <cstring> //需要引入cstring头文件
2 
3 string = "123456"
4 int n = stoi(str); //转换为整型 n = 123456(转换失败时发生异常)
5 int n = atoi(str); //转换为整型 n = 123456(转换失败时返回0)
6 
7 string = "123456.123"
8 double d = stof(str); //转换为浮点数 d = 123456.123(转换失败时发生异常)
9 double d = atof(str); //转换为浮点数 d = 123456.123(转换失败时返回0)

4.  整型 -> 字符串

1 #include <string> //需要引入string头文件
2 
3 //基本数据类型均可转换
4 int num = 123456
5 string str = to_string(num); //转换为字符串 str = "123456"

 5. string -> non-const char*

用的新版编译器 会认为char* 和string 不等

解决的方法

1 //用str1先储存
2 char str1[] = "wait_2";
3 char* str2 = str1;
4 
5 //强制类型转换
6 char* str3 = (char*)"wait_2";

在C17中

 1 // C++ program to convert string
 2 // to char array using .data()
 3 #include <iostream>
 4 #include <string>
 5 
 6 // Driver Code
 7 int main()
 8 {
 9     std::string s = "GeeksForGeeks";
10 
11     char* char_arr = s.data();  
12 
13     std::cout << char_arr;
14 
15     return 0;
16 }

 

ps: 数字0~9的ASCII码:48~57

 

下面这段string转char*

string work_dir = "C:/"

static char tetgen_file_buf[128] = "long_drum.1.node";
string str_tetgen_file = work_dir + tetgen_file_buf;
char* c_tetgen_file = (char*)str_tetgen_file.c_str();

 

str_tetgen_file.c_str()是 const char* ,再强制(char*)转化一下

 转成 string, 直接赋值即可

char* c = "abc";

string s(c);

posted @ 2023-03-29 10:55  无形深空  阅读(20)  评论(0编辑  收藏  举报