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