Как предоставить свой собственный разделитель для cin?

в c я могу использовать делиметр новой строки ([^n]) с scanf. С помощью которого я могу хранить линию. Аналогично для cin, я могу использовать getline.

Если мне нужно сохранить абзац, я могу имитировать функциональность, используя мой собственный специальный разделитель символов, такой как [^#] или [^t] с функцией scanf в c.

char a[30];
scanf("%[^#]",a);
printf("%s",a);

Как достичь аналогичной функциональности с объектом cin в cpp.

1 ответов


на iStream.getline позволяет указать deliminator использовать вместо стандартного '\n':

cin.getline (char* s, streamsize n, char delim );

или более безопасный и простой способ-использовать std:: getline. С помощью этого метода вам не нужно беспокоиться о выделении буфера достаточно большого, чтобы соответствовать вашему тексту.

string s;
getline(cin, s, '\t');

EDIT:

так же, как Примечание, так как это звучит, как вы только изучаете c++ правильный способ чтения нескольких разделенных строк:

string s;
while(getline(cin, s, '\t')){
    // Do something with the line
}