Как предоставить свой собственный разделитель для 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
}