C++中int整型转换为字符型数组
第一种方式:itoa(由于安全机制,C++中使用是_itoa_s)
通过itoa函数可以实现由整型到字符型数组的转换(_itoa_s)
_itoa_s ( int value, char *buffer, size_t sizeInCharacters, //存放结果的字符数组长度,这里值得注意的是,这个长度的大小往往与缓冲区的大小一致 int radix //进制 );
注意:由于_itoa_s的任务是将整型转换成字符型数组(字符串)因此在定义字符串数组的缓冲区时要额外多加一个位置,这个原理和字符串(字符型数组)的赋值与复制原理一样
//将一个八位数的int整型转换为字符型数组 int main() { int a = 12345678; char number[9];//要多申请一个位置的空间,用来存放字符型数组的字符串结束符 _itoa_s(a,number,9,10); cout << number << endl;//输出12345678 cout << strlen(number);//输出8 return 0; }
注意:对于strlen函数而言,该函数的参数是字符型数组(const),返回的是字符的有效个数(不包括字符型数组的字符串结束符‘/n’)
这里贴上蓝桥杯回文题目,使用itoa的情况如下:
#include<iostream> using namespace std; bool Judgement1(int sub_date) { char* date = new char[9]; _itoa_s(sub_date, date, 9, 10); if (date[0] == date[2] && date[2] == date[5]&& date[5] == date[7] && date[1] == date[3] && date[3] == date[4] && date[4] == date[6]) { return true; } else { false; } delete[]date; } bool Judgement2(int sub_date) { char* date = new char[9]; _itoa_s(sub_date, date, 9, 10); if (date[0] == date[7] && date[1] == date[6] && date[2] == date[5] && date[3] == date[4]) { return true; } else { false; } delete[]date; } //最新的itoa是_itoa_s()该函数的参数有三个,第一个是传入的int型数,第二个是字符型数组的缓冲区,第三个是转换的int数的长度,第四个是转换的进制 int main() { int date; cin >> date; date++; while (!Judgement2(date)) { date ++; } cout << date << endl; while (!Judgement1(date)) { date++; } cout << date; return 0; }
第二种方式:使用sprintf函数进行类型转换 int sprintf ( char * str, const char * format, ... );
由于C++对C有着很好的继承,因此我们可以使用C中springf进行整型到字符数组的类型转换,C 库函数 int sprintf(char *str, const char *format, ...) 发送格式化输出到 str 所指向的字符串。
int mian() { char* date = new char[9]; int sub = 100; sprintf_s(date, 9, "%d", sub);//sprintf的安全版本,在控制符与目标字符型数组之间增加了字符型数组缓冲区的大小 cout << date;//100; }
C++中字符型数组转换为int整型
int main() { //将字符串数组转换为int整型atoi char a[] = "12345";//或者char a[6]="12345"给字符串数组(字符串)留下一个结束符的位置 int sub; sub = atoi(a); cout << sub;//12345 cout << endl; //将字符串转换为int整型atoi string b = "123456"; char* sub_b = new char[strlen(b.c_str()) + 1]; strcpy_s(sub_b, strlen(b.c_str()) + 1, b.c_str()); cout << sub_b; delete[]sub_b; return 0; }
值得注意的是:在字符串到整型的转换过程中,需要先将字符串转换为字符型数组(利用字符串类中自定义的c_str函数),再通过复制函数进行对字符型数组的复制(切记定义数组时数组长度+1)