[英]_getch returns smiley faces
我正在嘗試下面的功能以獲取文件名,同時允許按“ ESC”鍵返回
但是由於某種原因_getch()總是返回[1'\\ x1'] ,即使對BackSpace來說,打印出來的也是一張笑臉 (這很不錯,但絕對不是我想發生的事情)。
我們歡迎其他有關如何改進代碼的見解! (我最近剛完成大學一年級,所以我還是編程新手。)
string& Get_Filename()
{
char ch;
string name;
while (ch = _getch() != 'CR')
{
if (ch == 'ESC')
throw RESTART;
if (ch == 'BS')
{
name.pop_back();
cout << 'BS'; // Also, will this correctly delete or will I need to
} // << '\b' << ' ' << '\b'?
else
{
name += ch;
cout << ch;
}
}
return name;
}
在此處閱讀有關運算符優先級的信息: http : //en.cppreference.com/w/cpp/language/operator_precedence
問題之一是生產線
while (ch = _getch() != 'CR')
因為!=
比賦值運算符具有更高的優先級
您實際上要問的是:
while( ch = (_getch() != 'CR') )
從而獲得表達式的結果,而不是所需的字符(這是標准§4.7/ 4中定義為0或1的整數轉換 bool-> char)
此外:您正在返回對局部變量的引用。 確保返回按值復制或沒有超出范圍的內容。
最后: _getch()
返回從控制台讀取的字符,您不能“攔截”特殊的和弦(例如Ctrl-D或Esc)。 在此處閱讀更多信息: http : //msdn.microsoft.com/it-it/library/078sfkak.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.