Сигуран улаз у Ц ++

У вашим програмима можда ће бити потребно да од корисника затражи информације. У Ц ++ се информације прикупљају помоћу "цин" објекта. Ако не обезбедите ове улазе, ваш програм ће вероватно бити жртва "преливања бафера". Заиста, ако је број унесених знакова већи од првобитно планиране величине пуфера, онда задњи подаци преписују друге податке на стог, а погрешни подаци утичу на ЕСП и ЕБП регистре.

Можете унети податке на различите начине.

Користећи гет () методу

 #инцлуде инт маин () {цхар текте [100]; цин.гет (текст, 100); // премиер параметре: ла оу ва ла саисие сецонд: таилле мак де саисие ретурн 0; } 

Овај пример илуструје употребу цин.гет.

Ако унети текст прелази додељену величину, додатни знакови се занемарују.

Користећи методу "гетлине ()"

Ова метода ради као гет (), али уклања знак на крају бафера.

За валидацију текста, корисник притиска тастер "Ентер", који одговара знаку '' н ''.

гетлине () уклања овај знак.

== Не ради !! ===

Ево кода који не ради исправно:

 #инцлуде усинг намеспаце стд; инт маин () {цхар ентрее [100]; инт цхоик; цоут <> цхоик; цоут << "Ентрез ун текте:"; цин.гет (текст, 100); цоут << "Саисиес терминеес!"; ретурн 0; } 

Заиста, други унос се не извршава, а појављује се порука "Инпут доне! ​​/ Саисиес терминеес!".

Како ријешити овај проблем?

Морате користити метод " игноре () ".

Метод игноре ()

Овај метод дозвољава да се игноришу одређени знакови у низу.

 #инцлуде усинг намеспаце стд; инт маин () {цхар ентрее [100]; инт цхоик; цоут <> цхоик; цоут << "Ентрез ун текте:"; цин.игноре (1, 'н'); // игноре ле царацтере д'ентрее, куи валидаит аупаравант ла саисие. цин.гет (текст, 100); цоут << "Саисиес терминеес!"; ретурн 0; 

Са овим методом, улазни карактер се игнорише, а проблем решава.

Претходни Чланак Sledeći Чланак

Топ Савети