Нужно считать строку из консоли в массив char
.
Проблема в том что scanf
и cin
читают строку только до первого пробела, а мне нужно записать в массив строку целиком.
Как мне решить эту проблему?
Используйте функцию-член класса входного потока getline
.
Вот их объявления
basic_istream<charT,traits>& getline(char_type* s, streamsize n);
basic_istream<charT,traits>& getline(char_type* s, streamsize n,
char_type delim);
Либо можете использовать функцию-член класса входного потока get
. Ее объявление выглядит похожим на предыдущую функцию.
basic_istream<charT,traits>& get(char_type* s, streamsize n);
basic_istream<charT,traits>& get(char_type* s, streamsize n,
char_type delim);
Различие между этими функциями состоит в том, что первая функция считывает чимвол delim
(если он не указан, то символ новой строки) из входного потока, но не заносит его в строку. В то время как вторая функция оставляет этот символ во входном потоке.
Думаю что вам лучше использовать первую функцию.
Вот пример работы с функцией getline
#include <iostream>
int main()
{
const size_t N = 50;
char s[N];
std::cout << "Enter a sentence: ";
std::cin.getline( s, N );
std::cout << '\n' << s << std::endl;
return 0;
}
Диалог работы с этой функцией может выглядеть, например, следующим образом:
Enter a sentence: Hello World!
Hello World!
Если вы перед вызовом этой функции осуществляли ввод с помощью оператора operator >>
, то в буфере ввода может остаться символ новой строки. Его можно удалить вызовом другой функции-члена класса ignore
Простейший вызов этой функции выглядит как
std::cin.ignore();
Либо чтобы гарантированно убрать символ новой строки, то
#include <limits>
//...
std::cin.ignore( std::numeric_limits<streamsize>::max() );
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Создаю дескриптор текстового файла HANDLE file = CreateFile(
у меня так получилось