備忘:為了適用於unicode環境,要養成使用_t()巨集的習慣
1、格式化字串
cstring s;
s.format(_t("the num is %d."), i);
2、轉為 int
轉10進製最好用_ttoi(),它在 ansi 編碼系統中被編譯成_atoi(),而在 unicode 編碼系統中編譯成_wtoi()。用_tcstoul()或者_tcstol()可以把字串轉化成任意進製的(無符號/有符號)長整數。
cstring hex = _t("fab");
cstring decimal = _t("4011");
assert(_tcstoul(hex, 0, 16) == _ttoi(decimal));
3、轉為 char *
3.1 強制型別轉換為 lpctstr,不能修改字串
lpctstr p = s; 或者直接 (lpctstr)s;
3.2 使用 getbuffer 方法
不給 getbuffer 傳遞引數時它使用預設值 0,意思是:「給我這個字串的指標,我保證不加長它」。假設你想增加字串的長度,就必須將你需要的字元空間大小(注意:是字元而不是位元組,因為 cstring 是以隱含方式感知 unicode 的)傳給它。當呼叫 releasebuffer 時,字串的實際長度會被重新計算,然後存入 cstring 物件中。
必須強調一點,在 getbuffer 和 releasebuffer 之間這個範圍,一定不能使用你要操作的這個緩衝的 cstring 物件的任何方法。因為 releasebuffer 被呼叫之前,該 cstring 物件的完整性得不到保障。
lptstr p = s.getbuffer();
// do something with p
int m = s.getlength(); // 可能出錯!!!
s.releasebuffer();
int n = s.getlength(); // 保證正確
4、分割字串
4.1 單字元分割
afxextractsubstring(cstring& rstring, lpctstr lpszfullstring, int isubstring, tchar chsep = '/n');
cstring csfullstring(_t("abcd-efg-hijk-lmn"));
cstring cstemp;
afxextractsubstring(cstemp, (lpctstr)csfullstring, 0, '-'); // 得到 abcd
afxextractsubstring(cstemp, (lpctstr)csfullstring, 1, '-'); // 得到 efg
afxextractsubstring(cstemp, (lpctstr)csfullstring, 2, '-'); // 得到 hijk
afxextractsubstring(cstemp, (lpctstr)csfullstring, 3, '-'); // 得到 lmn
分隔符可以隨便指定:
afxextractsubstring(cstemp, (lpctstr)csfullstring, 0, 'f'); // 得到 abcd-e
4.2 字串分割
利用cstring的find方法,然後再組成陣列。
void
split(cstring source, cstringarray
&dest, cstring division)}
cstring source是需要擷取的原字串,
cstringarray&
dest 是最終結果的陣列
cstring division 是用來做分割符的字串
VC中,字串的分割
想請教下,在vc當中,要重新寫乙個 類似 split 的 類該怎麼做?現在的要求是,對乙個字串進行分割,並放到陣列當中去.基本實現想法如下 定義 char str 256 123,456,789 10 將要被分割的字串 char pstrbuf 256 字串陣列,用來存放分開的字串 int nbuf...
整數轉化為字串和字串轉化為整數
整數轉化為字串 includeint main temp i 0 為什麼等於0就可以,因為將temp定義為字串陣列後,等號右邊的數相當於ascii碼值,0就相當於 0 如果寫為61,輸出就為 12345 printf s temp i i 1 while i 0 str j temp i str j...
mysql分割字串 mysql分割字串
專案有通過一批id去過濾結果的需求,因為這個id是從其他平台拉下來的excel,為了避免加引號逗號的麻煩,在mysql儲存過程裡面拼接。在此做個記錄。很多地方用得上。1.通過某個字元,分割字串的函式。輸入分別為f string 待分割字串 f delimiter 分割字元 f order 取的字串的...