gpt4 book ai didi

c++ - Scala 的用途是什么:getline()、std::cin.eof()、std::cin.bad()?

转载 作者:搜寻专家 更新时间:2023-10-31 01:18:51 26 4
gpt4 key购买 nike

这是一段C++代码:

int AskBase::ask_user(){
for (int tries_left = MAX_TRIES; tries_left;){
std::cout << prompt.c_str();
std::string response;
getline(std::cin, response);
if ("^Z" == response || std::cin.eof() || std::cin.bad())
return -9;
else if ("?V" == response)
std::cout << SSVID_ICON << SSVID << std::endl;
else if ("?" == response)
std::cout << "Enter ? for help, ?V for version, ^Z for exit.\n"
else if (validate(response)){
answer_string = response;
return 1;
else
--tries_left;
}
return -9;
}

对于这些,Scala 会是什么:

  • getline()
  • std::cin.eof()
  • std::cin.bad()

最佳答案

在 Scala(和 Java)中,到达 eof 意味着在尝试读取时得到 null。我不知道cin.bad是怎么翻译的,但可能是异常(exception)。

你的例子相当于:

def askUser( tries_left: Int = MAX_TRIES ):Int = 
Console.readLine match {
case "^Z" | null => -9
case "?V" => {
println( SSVID_ICON + SSVID )
askUser( tries_left )
}
case "?" => {
println( "Enter ? for help, ?V for version, ^Z for exit.")
askUser( tries_left )
}
case response if validate(response) => {
answer_string = response
1
}
case _ => if( tries_left == 0) -9 else askUser( tries_left - 1)
}

关于c++ - Scala 的用途是什么:getline()、std::cin.eof()、std::cin.bad()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6740382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com