What is Scala for: getline(), std::cin.eof(), std::cin.bad()
What is Scala for: getline(), std::cin.eof(), std::cin.bad()?
下面是一段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
是如何翻译的,但它可能是例外。
你的例子相当于:
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)
}
相关文章:
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- Problems with std::cin.fail()
- istream std::cin如何修改自定义istream缓冲区
- 在 std::getline 和 std::cin 期间卡在循环中
- C++ 限制或使用户输入不可见 (std::cin)
- 吃完 EOF 后重复使用 std::cin
- 当使用 std::CIN 输入结构时,它会出错
- 如何使 std::istream 从键盘获取输入(如 std::cin)?
- 如何将 std::cin 作为函数的参数传递?
- std::cin不接受输入
- 在C++中使用 std::cin 将字符传递给 int
- 为什么 std::cin 从一开始就不读
- 从 R 控制台获取用户输入:Rcpp 和 std::cin
- 定义宏时与 std::cin C++中的分段错误
- 如何终止 std::cin.get() 的 ''
- 将 istream 转换为 ifstream 时将 std::cin 传递到参数时出现问题
- STD :: cin和Scanf()应用于字符串之间的区别
- 在GLFW应用程序中,std::cin的行为很奇怪
- 如何使用std::cin函数后修复从文件读取的问题
- std::string 是否仅适用于 c++ 中的'std::cin'