[問題] 後退字元問題

看板C_and_CPP作者 (ppttcc)時間15年前 (2010/10/16 10:47), 編輯推噓3(306)
留言9則, 3人參與, 最新討論串1/1
在 #include<iostream> #include <windows.h> int main() { for(int i=0;i<=10;i++) cout<<"\b字"; //或換成此行cout<<"\b80"; system("PAUSE"); return 0; } 程式碼中,分別輸出一個中文字或兩個數字,並且前方附帶一個後退字元\b, 但執行後,兩者的輸出情況完全不同 前者輸出後,看起來像個跑馬燈, 但後者則可以看出是後一個"50"字串蓋住前一個"50"字串的一半(一個位元), 即輸出結果看起來為555555555550, 問題1. 但中文字的輸出不也應該是後一個"字"字串蓋住前一個"字"字串的一半(一個位元)嗎? 不僅如此,連之前輸出的字元也不見了? 是否\b對字串尾的\0字元有影響? 問題2. 若想確實消除先前已顯示的字元,該如何寫(即輸出一個字元後,先前輸出的字元則清除, 若不斷的輸出,則字元會不斷的往右移動)? system("CLS");似乎不是個好方法 問題3. 我看過有人寫像這樣的code, char* color = "\x1b[5;31m" ; 其中1b[5;31m是否就是bbs常用的色碼? 但為何我在一般的console模式看似乎沒有作用? \x也是跳脫字元?但為何我編譯時若後方沒有色碼,則會出現錯誤? c++的書好像都沒介紹這個... 編譯環境:Dev-C++4.9.9.2 作業系統winxp 麻煩大家幫我看看,謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.15.186 ※ 編輯: ppttcc 來自: 114.38.15.186 (10/16 10:50)

10/16 11:18, , 1F
中文字2byte 被蓋掉後半段以後 系統就沒辦法正確是啥字
10/16 11:18, 1F

10/16 11:19, , 2F
自然沒辦法看到一半的字在上面了
10/16 11:19, 2F

10/16 11:22, , 3F
^ 辨認出
10/16 11:22, 3F

10/16 11:45, , 4F
\b這東西,現代應該沒什麼人在用了,要刪字就是畫面重繪時
10/16 11:45, 4F

10/16 11:45, , 5F
輸出字被刪掉的版本。
10/16 11:45, 5F

10/16 11:46, , 6F
3.就google VT100,Windows沒支援,所以不能用
10/16 11:46, 6F

10/18 07:42, , 8F
\x1b其實就是\033 (ASCII=27) ESC字元 這小黑窗不能用
10/18 07:42, 8F

10/18 07:42, , 9F
^16進位 ^8進位
10/18 07:42, 9F
文章代碼(AID): #1CkH9SxP (C_and_CPP)