線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:951
推到 Plurk!
推到 Facebook!

一個C++問題

尚未結案
nick6562
一般會員


發表:26
回覆:19
積分:9
註冊:2004-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-23 22:43:46 IP:59.104.xxx.xxx 未訂閱
請教各位高手, 我想要輸入一個字串,假設為"今天是個好日子",之後再輸入數字1,即秀出"今"這個字元,請教我該怎麼做?謝謝!
limeca
中階會員


發表:2
回覆:74
積分:60
註冊:2005-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-23 23:10:17 IP:61.230.xxx.xxx 未訂閱
nick6562你好: 在BCB可以參考下面的用法 String ss="今天是個好日子"; //放入輸入的字串 String kk=ss.SubString(1,2); //把前二個byte放到kk就是"今"字 英文是一個byte 中文是二個byte
fusung
中階會員


發表:26
回覆:169
積分:99
註冊:2003-11-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-23 23:29:47 IP:211.23.xxx.xxx 未訂閱
哈囉,nick6562    我發現前幾天的一篇文章剛好可以用你的問題來驗證 參考: 中英混雜的字串處理函式 < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=73730">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=73730
int main(int argc, char* argv[])
{
      AnsiString str; //字串
       AnsiString buf; // 輸入字串
       int no;         // 輸入數字
       int len;        // 字串長度            cout << "輸入一個字串 = ";
       cin >> buf.c_str();
       len = Len( buf.c_str() );
       cout << "總共字數 = " << len << endl;           cout << "輸入數字 = ";
       cin >> no;
       str = Mid(buf.c_str(), no,1);
       cout << str.c_str() << endl;           system("pause");
       return 0;
}
發表人 - fusung 於 2005/06/23 23:40:49
------


The first step toward proving things for yourself is to understand how others have done it before!

andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-24 02:28:46 IP:221.169.xxx.xxx 未訂閱
nick6562:可參考
http://delphi.ktop.com.tw/topic.php?topic_id=54017
【BCB】【問題】你好,請問要如何正確截取中英文混雜的String呢? 
答題得分者為:andychang1690
整理如下:
其實不用到char,AnsiString 就可以做到:
  AnsiString S ;
  S=Chinese_SubString("今天是個好日子",1,1);
// S="今"

所以你要寫一個副程式
// 字串,開始位置,字數
AnsiString Chinese_SubString(AnsiString Str,int i_Start,int i_Num)
{
  int End_n=i_Start i_Num-1; // 你要抓取的總術字數
  // 判斷最後一個字是否中文
  if ( S[End_n]  & 0x80) 
    return Str.SubString(i_Start,i_num 1); // 是中文
  else
    return Str.SubString(i_Start,i_num); // 英數字
}
夠簡單吧!
請參考
補充:
引用liangnet大說法
首先你要先了解一下雙字元編碼的規則!
雙字元的編碼第一個碼為0x80 ~ 0xFF
因此你在讀一個字元時判斷該碼是否為0x80 ~ 0xFF,若是則表示是雙字元編碼的第一碼!
http://delphi.ktop.com.tw/topic.php?topic_id=54017
若你要問& 0x80
請見
http://delphi.ktop.com.tw/topic.php?topic_id=41267
引用taishyang版大的話
&做AND邏輯位元運算
&&做AND邏輯判斷
Albertz 大的話
&是bitwise 運算
&&是logical 運算     
Andy Chang 發表人 - andychang1690 於 2005/06/24 02:32:36
------
Andy Chang
系統時間:2024-08-01 16:27:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!