|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » cin и cout корректно ли работают в MSVC 6.0? |
|
cin и cout корректно ли работают в MSVC 6.0?
|
Старожил Сообщения: 163 |
Никогда не любил ни cin ни cout
Но вот себе пример копирую с сопровождающего диска (авторы компилировали точно не на MSVC) Вот пример: * *string * * * *strID; * *string * * * *strName; * *int * * * * * intPrice; * *cout << "Add Products:\n"; * *while(1) * *{ * * * *cout << "ID (Type 0 to finish): "; * * * *getline(cin, strID); * * * *if (strID == "0") * *break; * * * *cout << "Name * * * * * * * * : "; * * * *getline(cin, strName); * * * *cout << "Price * * * * * * * *: "; * * * *cin *>> intPrice; * * * *cin.ignore(); * * * *mProducts[strID] = new Product(strID, strName, intPrice); * * * *cout << "Product added to the list\n\n"; * *} вместо того, чтобы завершить ввод по первому getline (после Enter) мне выдается еще одна строка, вроде как относящаяся к тому же getline. Если смотреть по trace то эта вторая строка не запоминается. Приблизительно повторяется то же, что и в первом случае со вторым getline. Ввести price не удается, он срывается с места и считает что я везде ввел по нулям и зацикоивается в этом while(1) простенькие cin и cout срабатывали у меня раньше... здесь http://forum.oszone.net/topic.cgi?fo...&start=0#0 прочитал Вероятнее всего причина в том, что в проверяющей системе стоит компилятор MSVC 6.0 и там замечено много глюков с STL Бороться с этим можно, может знает кто? Патч специальный например какой-нибудь.... А то я задумал активно использовать STL в своей программе, а тут даже рабочий пример "нерабочий". Обидно ![]() |
|
------- Отправлено: 21:59, 22-06-2003 |
![]() Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать Crew
Это getline виновата. Она всегда в буфере оставляет CR/LF. Нужно буфер чистить. |
------- Отправлено: 17:32, 24-06-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 163
|
Профиль | Отправить PM | Цитировать shurikan
Не могу вспомнить замену cin.ignore(), но она ведь должна извлекать и уничтожать данные из потока. Если не сложно, как можно переписать ввод нескольких слов из потока? т.е. я не смог изобразить у себя ввод с клавиатуры нескольких слов, чтоб они в одну переменную заносились (раньше книга была, где это описывалось, но кто-то заиграл) |
------- Отправлено: 22:09, 26-06-2003 | #3 |
Новый участник Сообщения: 21
|
Профиль | Сайт | Отправить PM | Цитировать Вот этот код нормально работает на билдере 6 и наверняка то же будет и в других оболочках:
//--------------------------------------------------------------------------- #include <iostream.h> #include <string> //--------------------------------------------------------------------------- string strID; string strName; int intPrice; int main() { cout <<"Add Products:\n"; while(1) {cout<<"ID (Type 0 to finish): *"; getline(cin,strID); if(strID=="0")break; cin.ignore(0,'\n'); cout<<"\nName * * * * * * :"; getline(cin,strName); cin.ignore(0,'\n'); while(1){ cout<<"\nPrice * * * * * * :"; cin.unsetf(ios::skipws); * cin>>intPrice; if(cin.good()) {cin.ignore(1000,'\n');break;} cin.clear(); cout<<"\nInvalid Price. Try again."; cin.ignore(1000,'\n'); } mProducts[strID]=new Product(strID,strName,intPrice); * cout<<"\nProduct added to the list\n\n"; } * * * *return 0; } //--------------------------------------------------------------------------- |
------- Отправлено: 19:23, 28-06-2003 | #4 |
Старожил Сообщения: 163
|
Профиль | Отправить PM | Цитировать ID (Type 0 to finish): stID
k Name :just name Price : Invalid Price. Try again. Price : Результат работы вышепрведенного кода : Vla2003 большое спасибо, но dиновата я думаю MSVC, попробую этот код в другом компиляторе опробовать |
|
------- Отправлено: 21:07, 28-06-2003 | #5 |
Новый участник Сообщения: 21
|
Профиль | Сайт | Отправить PM | Цитировать Crew
Цитата:
|
|
------- Отправлено: 08:59, 29-06-2003 | #6 |
Старожил Сообщения: 163
|
Профиль | Отправить PM | Цитировать Vla2003
Price я вообще не ввожу, прошу прощения, что не пояснил. Где есть текст, там программа дает мне ввести код, где нет, он просто проскакивает. если б не блок корректности, то была бы та же зацикленность (а она и осталась) что и первый раз, только тут меня вежливо просят повторить |
------- Отправлено: 21:06, 01-07-2003 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
*SOFT* | Qt 4 и MSVC 6 | patison | Программирование и базы данных | 5 | 31-08-2006 01:07 | |
не корректно работает RunOnceEx | Stile | Автоматическая установка приложений | 2 | 07-02-2006 20:16 | |
БД и MSVC++ | lehha | Программирование и базы данных | 3 | 10-06-2005 09:48 | |
Размер ЕХЕ в MSVC++. | Sage | Программирование и базы данных | 11 | 06-01-2004 15:36 | |
Меню в MSVC++ 6.0 | Sage | Программирование и базы данных | 1 | 23-04-2003 16:37 |
|