[問題] char 存取" ’"的問題

看板C_and_CPP作者 (j129008)時間15年前 (2010/08/14 20:48), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我的程式的輸入出現了" ’"這個非ASCII碼的符號 等到我發現印出來的結果是 ?的時候 開始debug 如果轉成int的話 是-90 如果從-90轉回去... 轉不回去.... 偏偏我是用char[]來進行暫存 據說用String就不會出現這個問題??? 但是作業要求不能用String lib 所以我就用char[]了 有沒有什麼可以解決的方式??? 希望得到的正確結果: 把" ’"正確無誤的讀出來 程式跑出來的錯誤結果: 跑不出來 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ //有建議更好的程式嗎? 有問題的code: (請善用置底文標色功能) 建議直接把程式碼複製跑看看比較好了解 #include<iostream> using namespace std; char a[1]; int main(){ a[0]='’'; cout<<"這個是我要的: ’ "<<endl <<"這個是出問題的:"<<a[1]<<endl <<"轉成數字: "<<(int) a[0]<<endl <<"轉回來:"<< (char) (-90)<<endl <<"我該怎麼做???"<<endl; getchar(); } 補充說明: 怎麼辦?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.79.203

08/14 20:53, , 1F
你這個是全型字吧 要用2個byte存
08/14 20:53, 1F

08/14 20:56, , 2F
char str[ 3 ] = { "’" }; cout << str << endl;
08/14 20:56, 2F

08/14 21:13, , 3F
'’' 是 0xA1A6 這個值 所以丟進 char 去時就剩下 0xA6
08/14 21:13, 3F

08/14 21:13, , 4F
這是你的 -90 的來源
08/14 21:13, 4F

08/14 21:13, , 5F
上面大括號應該拿掉比較正確
08/14 21:13, 5F

08/14 21:13, , 6F
正確的做法是二樓用字串存
08/14 21:13, 6F

08/14 21:18, , 7F
打太多可能會像之前一篇 w大直接被忽略, 看到
08/14 21:18, 7F

08/14 21:18, , 8F
(char)(-90), 我覺得還是直接給程式碼就好...
08/14 21:18, 8F
文章代碼(AID): #1CPf2ZDz (C_and_CPP)