Когда следует использовать std::cin.getline()
? Чем отличается от std::cin
?std :: cin.getline() vs. std :: cin
ответ
В случае с char *, std::cin.getline
Получение линии, а не std::cin
Получение первого слова.
Вы прочитали какую-либо документацию (например, http://www.cplusplus.com/reference/string/getline/)?
В основном, std::cin
(или, в общем, любой std::istream
) используется непосредственно для получения форматированного ввода, например. int x; std::cin >> x;
. std::cin.getline()
используется просто для заполнения необработанного буфера char *
.
член getline не получает вас 'std :: string', он используется для заполнения буфера' char * '. Линией getline, которая получает 'std :: string', является свободная функция' std :: getline'. – etarion
@Oli. Да, я немного разбирался в документации, но не понял. Теперь, я думаю, это более понятно. Благодарю. – Simplicity
@etarion: Хороший улов. Обновление ответа сейчас ... –
Возьмем std::cin.getline()
. Во-первых, есть std::
. Это пространство имен, в котором живет стандартная библиотека. Он имеет сотни типов, функций и объектов.
std::cin
такой объект. Это стандартный объект ввода символов, определенный в <iostream>
. У этого есть свои собственные методы, но вы также можете использовать его со многими свободными функциями. Большинство из этих методов и функций - это способы получения одного или нескольких символов из стандартного ввода.
И, наконец, .getline()
является одним из таких методов std::cin
(и других подобных объектов). Вы скажете, сколько символов он должен получить от объекта с левой стороны (std::cin
здесь), и куда поместить эти символы. Точное количество символов может отличаться: .getline()
остановится в трех случаях: 1. Конец линии достигнут 2. На входе нет символов (обычно не происходит на std::cin
, поскольку вы можете продолжать печатать) 3. Максимальное количество символов считывается.
Существуют и другие методы и функции, которые могут использоваться с объектом std::cin
, например.
std::string s;
int i;
std::cin >> s; // Read a single word from std::cin
std::cin >> i; // Read a single number from std::cin
std::getline(std::cin, s); // Read an entire line (up to \n) from std::cin
std::cin.ignore(100); // Ignore the next 100 characters of std::cin
- 1. std :: cin пропускает пробелы
- 2. std :: cin really slow
- 3. std :: getline (std :: cin, custom_class); несоответствие типов
- 4. SDL игнорирует std :: cin
- 5. Как работает std :: cin?
- 6. std :: unique_ptr vs std :: shared_ptr vs std :: weak_ptr vs std :: auto_ptr vs raw указатели
- 7. Относительная производительность std :: vector vs. std :: list vs. std :: slist?
- 8. std :: async vs std :: prom
- 9. std :: move Vs std :: forward
- 10. std :: условный vs std :: enable_if
- 11. std: sort vs inserting into std :: set
- 12. Spoofing std :: cin in C++
- 13. std :: cin in a Array
- 14. Новичок борется с std :: cin
- 15. Set std: cin to string
- 16. Недопустимый ввод для std :: cin
- 17. std :: cin непосредственно к функции
- 18. Почему std :: cin.getline не имеет метод oveloaded для ввода std :: string?
- 19. C++ - Что означает оператор «точка» при использовании в std :: cin.getline()?
- 20. Что делает std :: cout << std :: cin do?
- 21. C++ Как отличить std :: cin от std :: ifstream?
- 22. std :: thread и input with std :: cin в приложении opengl
- 23. std :: this_thread :: yield() vs std :: this_thread :: sleep_for()?
- 24. Confused about std :: runtime_error vs. std :: logic_error
- 25. C++ std :: ostringstream vs std :: string :: append
- 26. std :: list vs std :: vector iteration
- 27. Использование std :: forward vs std :: move
- 28. std :: array vs std :: vector тонкая разница
- 29. std :: vector emplace_back vs std :: deque push_back?
- 30. std :: string :: assign vs std :: string :: operator =
Я не понимаю этого ответа. 'std :: cin' ничего не получает; это просто объект. Вы должны что-то сделать с ним (например, вызвать функцию-член, например 'get'), прежде чем что-либо сделать. –
'char s1 [256], s2 [256]; std :: cin >> s1; cin.getline (s2, 256); ' – alvelcom
' std :: cin >> s1' - это вызов глобальной функции 'istream & operator >> (istream &, char *)' –