информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыПортрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] 17.03.03 21:29  
Автор: wade Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Помогите, плиз!
У меня вот проблемка есть. Например, в таком простом примере:

#include <iostream.h>

char name[7];
char comm[50];

void main (void)
{
cout << "Name: ";
cin.get(name, sizeof(name), '\n');
cout << "Comm: ";
cin.get(comm, sizeof(comm), '\n');
cout << name;
cout << comm;
}

После компиляции когда ввожу первую переменную (т.е. name), вторая пропускается... Получается вот что:

Name: bill
Comm: bill

Короче, cin.get(comm, sizeof(comm), '\n'); вообще не выполняется...
Компиляторы: borland command line tools 5.5 и c++ builder 5.0
В обоих такая вот лажа...
Из-за чего это могет быть?
[C++] Неправильно используешь cin.get 17.03.03 23:53  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
Во-первых: советую проверять, что возвращает get() или проверять состояние потока после get(), что то же самое. Профессиональная болезнь программиста - гипертрофированный оптимизм.
Во-вторых - цитата из Страуструпа:
"Никогда не обращайтесь к get два раза подряд, не удалив завершающий символ."
get() не удаляет из входного буфера \n, поэтому второй get немедленно возвращает управление, естественно, с ошибкой (потому что не прочитал ни одного символа), но ты на нее не обращаешь внимания. Содержимое целевой строки после этого может быть чем угодно. В твоем случае лучше использовать getline.
И еще, не совсем по теме: а не имеет ли смысла использовать для ввода строк тип string из стандартной библиотеки? Понятно, что в твоем случае ничего страшного с char[] произойти не может, но string все-таки безопаснее, да и работать с ним удобнее...
[C++] Неправильно используешь cin.get 18.03.03 07:02  
Автор: wade Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо вери мач!
Сегодня я в институт не пойду, пойду к врачу лечить этот гипертрофированный оптимизм ;)
Слово-то какое :)
А вот по поводу string... покажи плиз какой-нибудь мини-примерчик...
Буду очень благодарен!
[C++] Сорри за задержку, пропустил ответ... 27.03.03 19:27  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> Сегодня я в институт не пойду, пойду к врачу лечить этот
> гипертрофированный оптимизм ;)
По-моему, он почти не лечится :)

> А вот по поводу string... покажи плиз какой-нибудь
> мини-примерчик...
> Буду очень благодарен!
Хм... Не знаю, там и писать-то нечего...
Ну мысль вот в чем. Если хочется схавать строку произвольной длины с некоторым концевым символом, то можно написать

string s; ifstream f; // ifstream'у обычно параметром имя файла дают с флагами, // ну разберешься, в общем. f.getline(s);
или

f.getline(s, end_char); // если концевой символ - не \n

Вот, собственно, и все. Сколько тебе в строку символов прочитать удастся, столько и прочитает, память под строку выделится без твоего участия. Минус - по сравнению с твоим вариантом этот работает, конечно, медленнее. Но там разница будет настолько несерьезная, что по-моему, проще пользоваться этим.
Биг Сенькс ! 28.03.03 21:12  
Автор: wade Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как и обещал, очень благодарен ;)
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach