2016-10-02 6 views
0

Функция getline может принимать три параметра. Первым из них является объект cin. Второй из них - это объект, определенный классом string. Третий из них является символом-разделителем.Задача getline

  1. Если символ разделителя не найден, что произойдет?

  2. Например, я выбрал символ 't' для разделителя. Затем пользователь ввел "Jonathan". "han" остаются в буфере или "han\n" остаются в буфере? (Я прочитал, что getline удаляет символ новой строки в буфере каждый раз, хотя разделитель не символ новой строки, но я не обеспечивают этого.)

ответ

0

Это отражено в std::getline

2) Извлечение символов из входного и присоединяет их к str до тех пор, пока не произойдет одно из следующих событий (отмечено в указанном порядке)
a) состояние конца файла на входе, и в этом случае getline устанавливает eofbit.
b) следующий доступный входной символ является delim, как проверено с помощью Traits :: eq (c, delim), и в этом случае символ разделителя извлекается из ввода, но не добавляется к str.

В случае std::getline(std::cin, str, 't');, это означает, что str будет содержать Jona, t будет извлечен и отбрасывал, сохраняя han\n во входном буфере.

0
#include <iostream> 
#include <string> 

using namespace std; 

int main(void){ 

string x; 
char y; 

getline(cin, x, 'n'); 

cin >> y; 

return 0; 

} 

Если пользователь вводит «Джон», а затем «\ п» остается в buffer.Finally, пользователь не может ввести символ для у. Однако пользователь может ввести символ для y. где идет новая линия?