(я предполагаю, что вы не хотите, чтобы пробелы разделяли строки. Например,
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
живая демоверсия