VC 字串轉化和分割

2021-05-23 17:59:06 字數 1853 閱讀 9842

備忘:為了適用於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 取的字串的...