1. cin >> s; s может быть: string s, char s [];
Это функция в ostream, она автоматически завершится, когда встретит '' (пробел), '\ n' (перевод строки), поэтому, если вы используете cin для чтения строки, эта строка не может содержать пробелы и переводы строк.
cin не распознает пробелы и разрывы строк, поэтому, если вы вводите пробел или разрыв строки в начале символа при вводе строки, это не имеет никакого эффекта.
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
string s;
int n;
while(cin>>s)
{
cout<<s<<endl;
}
}
2. getline (cin, s, '\ n'), s может быть только строкой s
getline принадлежит функции чтения символов класса string. Третий параметр этой функции не может быть записан (getling (cin, s)). Третий параметр по умолчанию равен '\ 0'. В этом случае, если вы хотите завершить строку Ввод, для некоторых компиляторов (VC, VS), вы должны ввести две новые строки подряд.
Для getline (cin, s, 'z'), может распознавать пробелы и переводы строк
Для getline, если символ отсечения (третий параметр) установлен правильно, можно прочитать несколько строк
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
string s;
int n;
while(getline(cin , s , 'z'))
{
cout<<s<<endl;
}
}
3. cin.getline (s, 100, '/ n') может быть только char s [];
cin.getline относится к ostream и похож на getline, за исключением того, что он может читать только типы char s []. За исключением этого пункта, он аналогичен getline.