字符串和整型的转型
处理三维模型的数据, 经常要从一些文件中读取数据.
先读一行, 再读一个. 拿到手里就是一个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);