[問題] 後退字元問題
在
#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
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
10/16 11:45, 4F
→
10/16 11:45, , 5F
10/16 11:45, 5F
→
10/16 11:46, , 6F
10/16 11:46, 6F
推
10/16 11:47, , 7F
10/16 11:47, 7F
→
10/18 07:42, , 8F
10/18 07:42, 8F
→
10/18 07:42, , 9F
10/18 07:42, 9F