Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2011, 22:18   #1
nury
 
Регистрация: 16.01.2011
Сообщений: 9
Сообщение Беда с кареткой fstream

Доброго времени суток. Мне надо перегнать информацию из текстового файла в массив. Я раньше часто это делала на дев но недавно поменяла среду на MVS 2010 Pro (консоль win32)и теперь при вызове функции getline() или просто при собирании символов по одному каретка доходит до конца строки и ведёт себя как будто встречает eof;

Например вот
Код:
while (simbol != '=')  
	{
	inFile >> str[i];
	simbol = str[i];	
	i++;
	};
inFile >> simbol;
if (inFile.eof()) cout << "ZZZZZZZZZZZZZZZZZZZ";
несмотря на то что там ещё много строк после '=' еоф срабатывает.

Или вот

Код:
char str[50];
inFile.getline(str,10);
cout << str[4];
inFile.getline(str,10);
cout << str[4];
выводит один и тот же символ (т.е. второй джетлайн ни чего уже не собирает)


А да вот код инициализации
Код:
std::ifstream inFile;
inFile.open ("Core.txt");	
if (!inFile.is_open())
	{
	cout << "Can't open file Core.txt";
	return 0;
	};
nury вне форума Ответить с цитированием
Старый 17.08.2011, 00:16   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вообще то советую пользоватся функцией getline(не методом класса)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.08.2011, 00:21   #3
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Странно, я ошибки не вижу, у меня на VS2008 с этим проблем не возникало, а что вам в итоге сделать с файлом надо?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 17.08.2011, 02:29   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

можно полный код программы пожалуйста и входной файл, где
"при вызове функции getline() или просто при собирании символов по одному каретка доходит до конца строки и ведёт себя как будто встречает eof"
onewho вне форума Ответить с цитированием
Старый 17.08.2011, 04:36   #5
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Смотря в каком формате файл открыт и что в него записано.
Например, если файл открыт в текстовом формате, то при нахождении символа '\0' - это считается признаком конца файла.
Это можно посмотреть Hex редактором (например, WinHex) есть ли в файле нулевые байты и вообще коды отличающиеся от текста, то открывать в бинарном формате - установить флаг: std::ios_base::binary при открытии.
An1ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
методы fstream.h Metaron Общие вопросы C/C++ 1 02.05.2011 15:13
fstream конструкторы Hemul Общие вопросы C/C++ 8 01.04.2011 20:43
Проблема с возвратом fstream Farrel Общие вопросы C/C++ 11 09.03.2011 19:03
Дробная часть в fstream Ozerich Общие вопросы C/C++ 3 14.03.2009 23:00
Программа на C++ с использованием fstream Dergard Помощь студентам 2 14.12.2007 05:18