首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_getch返回笑脸

_getch返回笑脸
EN

Stack Overflow用户
提问于 2014-07-30 13:32:16
回答 1查看 240关注 0票数 0

我正在尝试下面的函数以获得一个文件名,同时允许“ESC”按钮返回。

但出于某种原因,_getch()总是返回1 '\x1',正在打印的是一个笑脸,甚至对于BackSpace也是如此(这很好,但绝对不是我想要的)。

  • 这里发生了什么事?

关于如何改进代码的其他见解是非常欢迎的!(我刚读完大学一年级,所以我对编程还是很陌生的)

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-30 13:38:12

在这里阅读关于操作符优先的信息:precedence

其中一个问题在排队。

代码语言:javascript
复制
while (ch = _getch() != 'CR')

因为!=的优先级高于赋值运算符

你要问的是:

代码语言:javascript
复制
while( ch = (_getch() != 'CR') )

从而得到表达式的结果,而不是您想要的字符(即标准§4.7/4中定义的整数转换bool->char为0或1)。

此外:您将返回对局部变量的引用。请确保返回一份附带价值的副本或其他不会超出范围的内容.

最后:_getch()返回从控制台读取的字符,您不能“拦截”特殊的键和弦(例如,Ctrl或Esc)。在这里阅读更多信息:http://msdn.microsoft.com/it-it/library/078sfkak.aspx

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25038208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档