std :: getline和控制字符

时间:2014-07-12 13:34:49

标签: c++ iostream

如果我这样做:

std::string buffer;

std::getline(std::cin, buffer);

尽管缺少许多细节,比如libreadline提供的,我仍然可以使用backspace和ENTER来输入我的字符串。我不确定处理这些控制字符的责任。它是输入流std::cin,它是底层控制台设备,还是std::getline本身?

2 个答案:

答案 0 :(得分:3)

  

我不确定处理这些控制字符的责任。它是输入流std :: cin,它是底层控制台设备,还是std :: getline本身?

它是控制台/终端/你拥有什么。相反,如果您通过管道向进程提供字符串,您应该收到,例如, \b(退格)。

答案 1 :(得分:2)

它是终端设备(控制台)。

典型的终端将提供:

  • 缓冲(程序接收整行)
  • 简单的线条编辑(至少退格并输入,可能是线路调用和光标键编辑)
  • 回显(你看你输入的内容)。

提供的确切功能取决于为终端设置的操作系统和功能。如果重定向标准输入,则所有这些功能通常会消失,控制字符会直接传递。

相关问题