問: 我是一位初學(xué)者,現(xiàn)在遇到一個問題很是困繞。我想從一個文本文件里讀出每行(每行長度不固定),然后對拿到的字符串按固定長度進行分割,再根據(jù)分割后得到的字符串插入數(shù)據(jù)庫。插數(shù)據(jù)庫的問題,經(jīng)過幾天來對ODBC API的學(xué)習(xí),感覺可以了,至少知道去看什么資料,我也做了些小小測試。但是對字符串的處理很困饒。
根據(jù)我的設(shè)想,肯定要對從文本文件里得到的每行字符串進行長度計算,但是VC默認的是寬字符MBCS,中文是2字節(jié)字符,strlen等函數(shù)都算出來的是單字節(jié)長度,比如“VCC程序”,打出來的長度是7,而我想得到5。如果定義字符串變量為WCHAR,用WCSLEN得到的是5,但是用PRINTF打印出來的是亂碼。怎么解決這個問題呢?誰能給我一個例子,關(guān)于截中英文混合字符串按固定長度截取的控制臺程序的代碼范例。我現(xiàn)在是不知道用什么函數(shù),不知道包含什么頭文件。另外,想從基礎(chǔ)做起,暫不用MFC。請大俠幫忙,不甚感謝!
答1:用string類可以輸出中英文混合的字符串啊。
string a="我a";
cout << a.c_str() << endl;
至于要得到長度,可以編一個函數(shù)來實現(xiàn)。該函數(shù)從字符串頭部向后掃描,碰到小于128的,統(tǒng)計變量加1,碰到大于128的,則說明是中文,跳過下一個字符,統(tǒng)計變量加1。
答2:我已經(jīng)搞清楚了,謝謝,直接用一個_tcsclen()函數(shù)就可以了。謝謝。包含Tchar.h。