从用户输入换行,无需按回车键



首先,我应该提到我发现了几个密切相关的问题。例如这里和这里。但是,我既不想使用printf也不想使用n(因为我已经知道它不起作用(。

用户是否可以在不按回车键的情况下输入换行符,可能是转义序列?

举个例子:

#include <iostream>
#include <string>
int main () {
    std::string a,b;
    std::cin >> a;
    std::cin >> b;
    std::cout << a << "n" << b;
}

用户是否可以提供单行输入

hello ??? world 

使得上述打印

hello
world

你可以这样做

标准::字符串 a, b;
标准::CIN>> a>>b;
std::cout <<a <<"" <<b;

用户可以提供带有空格的输入。

(我假设你不希望空格分隔字符串。例如

Foo bar ??? baz qux

应该是两行。

无法

配置流以自动将???转换为换行符。要让用户输入换行符,他们必须输入换行符,而不是其他任何内容。

您必须自己解析它。下面是一个将???视为分隔符的示例解析器:

void read_string(std::istream& is, std::string& dest)
{
  std::string str = "";
  for (char c; is.get(c);) {
    switch (c) {
    case '?':
      if (is.get(c) && c == '?') {
        if (is.get(c) && c == '?') {
          dest = str;
          return;
        } else {
          str += "??";
        }
      } else {
        str += "?";
      }
    default:
      str += c;
    }
  }
}

例如,输入

? is still one question mark????? is still two question marks???

解析为两行:

? is still one question mark
?? is still two question marks

现场演示

相关内容

  • 没有找到相关文章

最新更新