首先,我应该提到我发现了几个密切相关的问题。例如here和here。但是,我既不想使用printf
也不想使用\n
(因为我已经知道它不起作用)。
用户是否可以在不按Enter的情况下输入换行符(可能是转义序列)?
例如:
#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
?
答案 0 :(得分:1)
您可以这样做
std :: string a,b;
std :: cin >> a >> b;
std :: cout << a <<“ \ n” << b;
用户可以输入带有空格的内容。
答案 1 :(得分:1)
(我假设您不希望使用空格来分隔字符串。例如,
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