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 部落格:ofollow,noindex">IT老五
ps: c++這裡都是寫的一些很基礎的東西,其實也是我這個初學者碰到的一些問題,記錄下...希望以後不會出現,也希望大大都可以避免
c++基礎(三):陣列自增處理及字串轉int,double