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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2015, 19:18   #1
19dmitry19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 14
По умолчанию Чтение данных из файла С++

Дан простой пример потокового ввода/вывода дисковых файлов из Лафоре ООП С++.

Код:
// форматированный вывод в файл
// formato.cpp
#include<fstream>
#include<iostream>
#include<string>
using namespace std;

int main()
{
	setlocale (LC_ALL, "RUSSIAN");
	char ch='x';
	int j=77;
	double d=6.02;
	string str1="Kafka";
	string str2="Proust";

	ofstream outfile("fdata.txt");

	outfile << ch
		<< j
		<< ' '
		<< d
		<< str1
		<< ' '
		<< str2;
	cout << "Файл записан\n";

	return 0;
}
Код:
// форматированное чтение из файла
// formati.cpp
#include<fstream>
#include<iostream>
#include<string>
using namespace std;

int main()
{
	char ch;
	int j;
	double d;
	string str1;
	string str2;

	ifstream infile("fdata.txt");

	infile >> ch >> j >> d >> str1 >> str2;

	cout << ch << endl
		<< j << endl
		<< d << endl
		<< str1 << endl
		<< str2 << endl;
	return 0;
}
Первая программа работает правильно, создаёт файл, следующего содержания:
x 77 6.02 Kafka Proust

Адрес файла: C:\Users\DMITRY\Documents\Visual Studio 2008\Projects\formato\formato\fdata .txt

Результат работы второй программы:
formati.JPG

Результат не тот, который я ожидал. Вывести данные так и не получилось.
Не пойму, в чем проблема.
По видимому весь вопрос в кодировке.
Подскажите пожалуйста, решение данной проблемы.
19dmitry19 вне форума Ответить с цитированием
Старый 01.02.2015, 19:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Проверил твою вторую программу - работает нормально.
Безымянный.jpg

Файл точно создается нормальным?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2015, 19:31   #3
19dmitry19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 14
По умолчанию

Да, файл создаётся, только записывает все данные в строчку через пробел.
19dmitry19 вне форума Ответить с цитированием
Старый 01.02.2015, 19:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну тогда программа считки верная. GCC это подтверждает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2015, 19:50   #5
19dmitry19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 14
По умолчанию

Я уверен, что код в порядке. Но в чём проблема не пойму, в настройках компилятора, в кодировке, в системе?

Представлю ещё один простой пример из Лафоре, возможно он сделает картину более ясной.
Код:
// создаём файл 
#include<fstream>
using namespace std;

int main()
{
	setlocale (LC_ALL, "RUSSIAN");
	ofstream outfile("TEST.TXT");
	
	outfile << "Приходит март. Я сызнова служу.\n";
	outfile << "В несчастливом кружении событий \n";
	outfile << "изменчивую прелесть нахожу \n";
	outfile << "в смешеньи незначительных наитий. \n";
	return 0;
}
Код:
// читаем данные из файла
#include<fstream>
#include<iostream>
using namespace std;

int main()
{
	setlocale (LC_ALL, "RUSSIAN");

	const int MAX=80;
	char buffer[MAX];
	ifstream infile("TEST.TXT");

	while(!infile.eof())
	{
		infile.getline(buffer, MAX);
		cout << buffer << endl;
	}
	return 0;
}
Результат:
iline.JPG
Пустой экран консоли, и полоса прокрутки в самом низу консоли.
19dmitry19 вне форума Ответить с цитированием
Старый 01.02.2015, 20:21   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
возможно он сделает картину более ясной.
Неа. GCC выдал четкий ответ:
Безымянный.jpg
У тебя в плане кода все в порядке. У вас там дождь не идет? Ведь когда идет дождь, на солнце появляются пятна, и влияют на процессоры.
Я серьезно - протуберанцы чрезвычайно радиоактивны, и являются источником коллапсиоидной сингуляции в тротисторах процессоров.
Сам с таким сталкивался после пары стаканов вискаря
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2015, 21:45   #7
19dmitry19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 14
По умолчанию

Код в порядке и погода тоже. А чтение файлов не получается. Использую VS C++ 2008 express. Есть ли у кого-нибудь какие соображения по данной проблеме?
19dmitry19 вне форума Ответить с цитированием
Старый 02.02.2015, 07:50   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Погода хорошая это хорошо. А у нас дождь и ветер. бррр...
Попробуй полный путь вписать, как я сделал. Возможно из разных файлов идет считывание.
Или попробуй эти два кода объединить в одну прогу в разные функции, чтоб при запуске прога обращалась по одному пути.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.02.2015, 09:55   #9
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Указывай полный путь к файлу. Я думаю ты создал 2 разных проекта, следовательно запускаются они из разных каталогов. Первая программа создает файл в каталоге, из которого ты ее запускаешь. Но вторая понятия не имеет что ты запускал первую, она ищет файл в своем каталоге и, конечно, нихрена найти не может.
rrrFer вне форума Ответить с цитированием
Старый 02.02.2015, 14:04   #10
19dmitry19
Пользователь
 
Регистрация: 05.03.2014
Сообщений: 14
По умолчанию

Увы, всё по прежнему без изменений.
Код:
#include<fstream>
#include<iostream>
#include<string>
using namespace std;

void in(char , int , double , string , string );
void out(char , int , double ,string , string );

int main()
{
	setlocale (LC_ALL, "RUSSIAN");
	char cch = 'n';
	int jj=0;
	double dd=0.0;
	string ss1="N0";
	string ss2="ERROR";

	in(cch, jj, dd, ss1, ss2);
	out(cch, jj, dd, ss1, ss2);

	return 0;
}

void in(char ch, int j, double d, string str1, string str2)
{
	ch='x';
	j=77;
	d=6.02;
	str1="Kafka";
	str2="Proust";

	ofstream outfile("C:\Users\DMITRY\Documents\Visual Studio 2008\Projects\formato\formato\fdata.txt");

	outfile << ch
		<< j
		<< ' '
		<< d
		<< str1
		<< ' '
		<< str2;
	cout << "Файл записан\n";
}

void out(char ch, int j, double d, string str1, string str2)
{
	ifstream infile("C:\Users\DMITRY\Documents\Visual Studio 2008\Projects\formato\formato\fdata.txt");

	infile >> ch >> j >> d >> str1 >> str2;

	cout << ch << endl
		<< j << endl
		<< d << endl
		<< str1 << endl
		<< str2 << endl;
}
Результат:
Результат.JPG
19dmitry19 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение данных из файла (C++) art00 Помощь студентам 1 10.07.2013 18:04
Чтение данных из файла в массив в С++ Luca Brasi Общие вопросы C/C++ 5 22.09.2012 22:56
Чтение данных из файла Бинари C++ Builder 2 05.11.2011 14:43
Чтение данных из бинарного файла Faramir02 Общие вопросы C/C++ 3 22.12.2010 22:43
Чтение данных из файла в С++ Zaya007 Помощь студентам 9 17.03.2009 21:00