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)