1. 程式人生 > >c++基礎(四):int轉string及陣列預設值

c++基礎(四):int轉string及陣列預設值

使用java時,感覺字串轉換很方便,因為已經做了很好的封裝。然而,在c++中,如果像將一個int轉乘string,就需要注意一些...

int轉string

std::string str = "s" + 0;

如果在java中, 我們這樣寫很容易就可以得到想要的結果“s0”,但是,在c++中,得到的卻是”s“,後面的0去哪了呢?
我們再試試

std::string str = "s" + 1;

居然得到的是空,再試試+2,+3,+4...得到的結果要不就是空,要不就是異常的資料。根據上面的結果,應該是把這個加法當成記憶體地址處理。
在c++中,int型和字串相加不能自到轉換型別,而是需要先轉換:

std::string str = "s" + std::to_string(1);

利用to_string將int型轉換為string,需要注意,如果是double型,std::to_string(0.0)會轉成0.000000,如果不需要後面的0,我們可以使用以下方法:

#include <sstream>
string doubleToString(double num)
{
    stringstream ss;
    string str;
    ss << num;
    ss >> str;
    return str;
}

當然還有很多方法,如:sprintf,std::ostringstream,do_fraction等...

陣列預設值

通過memset我們可以很方便的把一個數組初始化賦值...

    const int LEN= 10;
    int *array= new int[LEN]; 
    memset(array, 0, LEN* sizeof(int));

陣列new時,使用LEN這個沒什麼問題,都清楚,但是對於初學者,在memset中很容易也寫成LEN;這裡需要注意的是應該使用記憶體大小,即LEN*siezeof()。

原文:簡書ThinkinLiu 部落格: IT老五

ps: c++這裡都是寫的一些很基礎的東西,其實也是我這個初學者碰到的一些問題,記錄下...希望以後不會出現,也希望大大都可以避免

c++基礎(一):string轉wstring及檔案拷貝
c++基礎(二):字串替換及檔案路徑擷取檔名
c++基礎(三):陣列自增處理及字串轉int,double