Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 5

fstream и for

15.05.2013, 23:42. Показов 2754. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасте.
Собственно, не могу понять, по какой причине не работает вот такой вот код, хотя по идее должен работать, или я ошибаюсь?

C++
1
2
3
4
...
std::ifstream file("somefile.txt");
for(char c=0; c!='@'; file >> c);
...
по идее я рассчитываю, что перебор символов в for из файла file окончится после того, как он наткнется на символ '@', но он продолжается бесконечно, что слегка удручает, хотя вот такой код вполне себе работает:

C++
1
2
3
4
5
6
7
8
9
10
...
std::ifstream file("somefile.txt");
while(true) 
{
    char c;
    file >> c;
    if(c == '@')
        break;
}
...
прошу подсказать, что здесь за нафиг происходит, спасибо.
работаю в visual studio 2010
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2013, 23:42
Ответы с готовыми решениями:

C++ fstream
входной файл: 2 20 30 27 2 - это размер массива(размер будет + 1) вторая строчка это числа в массиве как сделать так чтобы из...

fstream
помогите, пожалуйста, чет я совсем запуталась((( /*Дан текстовый фал, содержащий целые числа, разделенные пробелами. Определить...

fstream
Уважаемые Форумчани, не могу понять по чему не хочет открываться файл второй раз: ifstream in; while (...) { ...

24
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
16.05.2013, 00:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DU Посмотреть сообщение
у меня бряк стоит в точке вывода. а там переменная из цикла уже мертва.
C++
1
2
3
4
          1.  for(char c...);
Бряк    2. // Переменная цикла будет видна. count - 1 раз итераций.
*************
          n. //Переменная цикла будет видна. count - 1 раз итераций.
Цитата Сообщение от DU Посмотреть сообщение
т.к. правильный дебагер должен понять что та с, на которую я смотрю - это не переменная из цикла.
Дебагер вам ничем не поможет. Так определил компилятор. А компилятору все равно видите ли вы ее или нет.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
16.05.2013, 00:48
ну ну. посмотрите предыдущее сообщение.
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
16.05.2013, 01:01
Дизассемблируйте посмотрите где что храниться и куда что мувается.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    char c = 'x';
00D71C7D  mov         byte ptr [ebp-11h],78h  //ТУТ пишется сразу в память
 
00D71C92  call        std::basic_ifstream<char,std::char_traits<char> >::basic_ifstream<char,std::char_traits<char> > (0D714B5h)  
00D71C97  mov         dword ptr [ebp-4],0  
  for(char c = 0; c != '@'; file >> c)
00D71C9E  mov         byte ptr [c],0  //ТУТ идет определение памяти по названию переменной
00D71CA5  jmp         main+7Dh (0D71CBDh)  
00D71CA7  lea         eax,[c]  
00D71CAD  push        eax  
00D71CAE  lea         ecx,[ebp-0CCh]  
00D71CB4  push        ecx  
00D71CB5  call        std::operator>><char,std::char_traits<char> > (0D7111Dh)  
00D71CBA  add         esp,8  
00D71CBD  movsx       eax,byte ptr [c]  
00D71CC4  cmp         eax,40h  
00D71CC7  je          main+8Bh (0D71CCBh)  
  {
  }
00D71CC9  jmp         main+67h (0D71CA7h)  
  char i = c;
00D71CCB  mov         al,byte ptr [ebp-11h]   //ТУТ пишется сразу из памяти
 
}
Как дебагеру понять что там? Если компилятор сказал лесом?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
16.05.2013, 10:31
я не силен а асме и не силен в том, как устроен дебагер.
зато я знаю как должно работать: если я смотрю на глобальную относительно цикла переменную,
то и видеть должен значение этой глобальной переменной. то, что там как-то не так код сгенерился,
иди дебагер где-то не так отработал - в этом и заключается глюк. если дело в генерации кода, то в
дебаге код можно сгенерить так, чтобы этого не было, но этого не происходит.
0
17.05.2013, 22:26

Не по теме:

Цитата Сообщение от DU Посмотреть сообщение
в 12 студии та же фигня
При этом во вкладке "Locals" выводит две разных "c", одну со значением "@", другую со значением "!". А когда входишь в режим редактирования значения, то "!" превращается в "@". Глюк студии, однозначно.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2013, 22:26

fstream с++
Помогите пожалуйста... Как при считывании из файла считать переменные если они в файле находяться на разных строчках например надо...

Fstream
Можете пояснить что такое объект fstream

fstream
Дан текстовый файл. Осуществить посимвольную чередующуюся печать файла в прямом и обратном направлении в новый файл. Например, если в файле...

Fstream
multiple definition of `ZapisInputFile'| Определив ofstream в header файле получаю ошибку, а закомментировав эту строку успешно...

fstream
в каком пакете находится заголовок fstream ? у меня стоит g++-4.4 Добавлено через 4 минуты и всё пространство std а то как то у меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru