c++基礎(四):int轉string及陣列預設值
阿新 • • 發佈:2018-12-17
使用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