程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中字符串和數字相互轉化實現

C++中字符串和數字相互轉化實現

編輯:關於C++

在刷一些題目的時候,總是會碰到字符串和數字進行轉化的問題,今天我們就在C++中來用多種方法實現。示例代碼上傳至 https://github.com/chenyufeng1991/TransferStringAndInt。

(1)string -> char *

// string -> char *
    string str3 = "chenyufeng";
    const char *str3ToChar;
    str3ToChar = str3.c_str();
在C++中字符串我們常用STL中的, 而在C語言中我們常用的是字符數組。直接使用string.c_str()即可完成把string轉化為char *;

(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;

注意sprintf的第一個參數要傳遞的是字符數組或者字符指針。第二個參數是格式化,“%d”表示int。

其實這裡最方便的是使用itoa,可以直接進行int和char *的轉化,由於我使用的是Xcode進行編程,在Xcode中不能使用itoa這個函數,因為itoa這個函數沒有包括在C++的標准庫中。所以我這裡只能使用sprintf了。大家可以去嘗試一下itoa。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved