看板 C_and_CPP 關於我們 聯絡資訊
( *[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
joefaq:你這個是全型字吧 要用2個byte存 08/14 20:53
loveme00835:char str[ 3 ] = { "’" }; cout << str << endl; 08/14 20:56
LPH66:'’' 是 0xA1A6 這個值 所以丟進 char 去時就剩下 0xA6 08/14 21:13
LPH66:這是你的 -90 的來源 08/14 21:13
loveme00835:上面大括號應該拿掉比較正確 08/14 21:13
LPH66:正確的做法是二樓用字串存 08/14 21:13
loveme00835:打太多可能會像之前一篇 w大直接被忽略, 看到 08/14 21:18
loveme00835:(char)(-90), 我覺得還是直接給程式碼就好... 08/14 21:18