Поведение входного потока C с помощью "cin"
При чтении ввода с использованием потока "cin" в C важно понимать, как это происходит. взаимодействует с различными типами данных. По умолчанию «cin» считывает слово за раз, что может привести к неожиданному поведению при работе с символьными массивами или строками.
В приведенном примере кода метод «input()» в «String» " Класс использует "cin >> str;" чтобы прочитать входную строку. Однако этот оператор фиксирует только одно слово, игнорируя любые последующие слова во входных данных. В результате, если входные данные содержат несколько слов, например «Стив Хокинг», в массиве «str» сохраняется только первое слово «Стив».
Решение: использование getline( ) для чтения полных строк
Чтобы прочитать полную строку ввода в массив символов, вместо «cin >>» можно использовать функцию «getline()». Вот обновленный метод ввода с использованием «getline()»:
void input()
{
cout "getline()" принимает два аргумента: указатель на целевой массив и размер массива. Он считывает ввод до тех пор, пока не встретится символ новой строки, эффективно захватывая всю строку ввода.
Дополнительные соображения
Стоит отметить, что использование массивов символов для манипуляций со строками может быть громоздко и подвержено ошибкам. Стандартная библиотека C предоставляет класс «std::string», который предлагает более надежный и типобезопасный подход к обработке строк. Вместо использования массивов символов код можно переписать так:
#include
#include
class String
{
public:
std::string str;
void input()
{
cout Наконец, использование заголовочных файлов, таких как «iostream.h» и «conio.h», устарело. Современная разработка на C должна использовать файлы заголовков, такие как «iostream» и «conio» соответственно.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3