在刷一些題目的時候,總是會碰到字符串和數字進行轉化的問題,今天我們就在C++中來用多種方法實現。示例代碼上傳至 https://github.com/chenyufeng1991/TransferStringAndInt。
(1)string -> char *
// string -> char * string str3 = "chenyufeng"; const char *str3ToChar; str3ToChar = str3.c_str();在C++中字符串我們常用STL中的
(2)char * -> string
// char * -> string char *str4 = "yufeng"; string str5(str4); cout << str5 << endl;直接使用string中的構造函數即可完成使用char *初始化string的操作。
(3)使用ostringstream把數字轉化為string
// 可以使用ostringstream把int型輸入到流中,然後轉化為字符串; ostringstream os; // 字符串輸出流 int i = 123; os << "Hello" << i; cout << os.str() << endl; os << i; cout << os.str() << endl; os << "World"; cout << os.str() << endl;ostringstream其實是字符串的輸出流,可以不斷的在流中插入數據。然後調用ostringstream中的str()方法全部把流中的數據轉化為string。
(4)使用istringstream把字符串轉化為數字
// 用istringstream對象讀一個字符串 istringstream is; // 字符串輸入流 is.str("567"); int j; is >> j; cout << j << endl;
(5)atoi:庫函數,char *轉化為int
// string-->int // 注意:atoi()裡面只能傳遞const char類型,所以需要把string轉化為const char string str = "789"; int str2int = atoi(str.c_str()); cout << str2int << endl;注意atoi中的參數傳遞的是char *,而不是string。
(6)sprintf: int 轉化為char *
// int-->srting,Xcode中不能使用itoa這個函數,因為這個函數沒有定義在標准C++裡,但是在有些編譯器裡可以使用,所以這裡推薦使用sprintf char eeeee[10]; sprintf(eeeee,"%d",444); cout << string(eeeee) << endl;
其實這裡最方便的是使用itoa,可以直接進行int和char *的轉化,由於我使用的是Xcode進行編程,在Xcode中不能使用itoa這個函數,因為itoa這個函數沒有包括在C++的標准庫中。所以我這裡只能使用sprintf了。大家可以去嘗試一下itoa。