簡體   English   中英

在字符串末尾使用退格符

[英]The use of backspace character at the end of the string

退格轉義字符 '\b' 用於將 cursor 帶回一個字符......所以它必須像我們鍵盤上的退格鍵一樣工作。

cout<<"Learn c++\b!";

這給出了正常的預期結果 - 學習 c+!

但是當使用 \b 作為最后一個字符時

cout<<"Learn c++!\b";

這 '!' 不擦除輸出——學c++!

相反,我必須使用

cout<<"Learn c++!\b \b";

得到輸出-Learn c++

誰能說出這種行為的原因..?

你的假設:

所以它必須像退格鍵一樣工作

是不正確的。 \b將 cursor 向后移動一個字符。 它不會刪除任何字符。 在導致您觀察到的效果的交互式終端中。

std::cout << "Hello, world\b!\n";

首先打印Hello, world ,然后將 cursor 向左移動 1 步,然后打印! 並移動到新的一行,結果是Hello, worl! .

std::cout << "Hello, world!\b\n";

這從打印Hello, world!開始。 ,然后將 cursor 向左移動 1 步,然后移動到新的一行,結果是Hello, world! .

正如問題評論已經提到的那樣,這種覆蓋效果只發生在終端中。 如果您將 output 保存到文件中,則包括\b在內的所有字符都將按原樣保留。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM