2013-06-01 56 views
0

我需要一个函数来获取用户的字符串输入。我不想使用cin,因为我只想要返回(\r)以标记输入结束。我已经做了以下内容:写一个函数来得到一个字符串输入

std::string GetInput() 
{ 
    std::string str = "\0"; 
    char ch; 
    do 
    { 
    ch = getch(); 
    if(ch) str += ch; 
    putch(ch); 
    } 
    while (ch!='\r'); 
    return str; 
} 

它的工作原理,但我不是很满意,因为它不完全支持退格键和左/右箭头键盘按钮。我的问题是,如何在不使用cin的情况下从用户那里获得输入,同时给用户类似cin的感觉(全键盘支持)?

+0

您是否需要此特定功能或你只是想获取用户输入?如果第二个,请考虑使用'getline','cin'等。 – tkroman

+0

@cdshines谢谢。我不知道我可以使用getline来做到这一点。 –

回答

2

可以在事实上使用cin

std::string GetInput() 
{ 
    std::string input; 
    if (!std::getline(cin, input)) { 
    // handle error here 
    } 
    return input; 
} 
+0

它的工作原理!谢谢!有没有办法将'getline'和'if'行分开? (先调用'getline',然后检查它是否为空?)我在调用'getline'后尝试'if(input)',但得到了一条错误消息,说我不能将'input'转换为布尔值。 –

+0

'if(input.empty()){...}' – Thomas

+0

非常感谢。你是一个很好的帮助。 –

相关问题