Самый простой способ прочитать в программу строку, вводимую с клавиатуры, заключается в использовании массива char и предложения cin. Приводимая ниже программа вводит строку, набираемую пользователем на клавиатуре:
// Использование cin для ввода строки с клавиатуры.
#include <iostream>
using namespace std;
int main()
{
char str [80];
cout << "Вводите строку: ";
//Чтение строки с помощью cin.
cin >> str; // ввод строки с клавиатуры
cout << "Вот ваша строка: " ;
cout << str;
return 0;
}
Пример прогона программы:
Вводите строку: Проверка
Вот ваша строка: Проверка
Хотя приведенная выше программа технически правильна, она не всегда будет работать так, как вы этого ожидаете. Для того, чтобы убедиться в этом, запустите программу и попробуйте ввести строку "Это новая проверка". Вот что получится:
Вводите строку: Это новая проверка
Вот ваша строка: Это
Когда программа повторяет на экране введенную вами строку, то вы видите только слово "Это", а не всю строку. Так происходит потому, что система ввода-вывода С++ прекращает ввод с клавиатуры при получении пробельного символа. Пробельные символы включают в себя пробелы, символы табуляции и символы новой строки.
Для решения проблемы пробельных символов вы должны использовать другую библиотечную функцию С++, gets(). Общая форма вызова функции gets( ) выглядит так:
gets(имя-массива);
Если вам нужно ввести в программу строку с клавиатуры, вызовите; функцию gets() с именем массива (без какого-либо индекса) в качестве аргумента. После возврата из gets() массив будет содержать строку, набранную на клавиатуре. Функция gets() вводит символы до тех пор, пока не встретится с символом возврата каретки. Для использования этой функции необходим заголовок <cstdio>.
Приводимый ниже вариант предыдущей программы использует функцию gets(), позволяющую вводить строки, содержащие пробелы.
// Использование gets() для ввода строки с клавиатуры.
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
char str[80];
cout << "Вводите строку: ";
//Чтение строки с помощью gets()
gets(str); // ввод строки с помощью gets ()
cout << "Вот ваша строка: ";
cout << str;
return 0;
}
Пример прогона программы:
Вводите строку: Это строка проверки
Вот ваша строка: Это строка проверки
Теперь пробельные символы читаются и включаются в строку. Еще одно замечание: обратите внимание на то, что в предложении coutможно непосредственно использовать имя str. Вообще имя символьного массива, содержащего строку, можно использовать в любом месте, где допустимо применение символьной константы.
Не забывайте, что ни cin, ни gets() не выполняет проверку на выход за границы массива. Поэтому если пользователь введет строку, длина которой больше размера массива, то память за пределами массива будет затерта. Позже вы познакомитесь с альтернативой, которая помогает избежать этой неприятности.