作者j129008 (j129008)
看板C_and_CPP
標題[問題] char 存取" ’"的問題
時間Sat Aug 14 20:48:32 2010
( *[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