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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2019, 16:39   #1
LOkeron
Пользователь
 
Аватар для LOkeron
 
Регистрация: 18.11.2018
Сообщений: 26
По умолчанию Файловые потоки C++

Здравствуйте, при запуске программы выдает краш
вот сам код
Код:
#include "pch.h"
#include<iostream>
#include<fstream>
#include<string>

using namespace std;

	struct date 
{	int day;
	int month;
	int year;
};
date STR_date(string str) //перевод из строки в структуру даты
{
	date data;
	string str1 = str.substr(0, 2); 
	const char *sd = str1.c_str();
	int dd = atoi(sd);
	data.day = dd;

	str1 = str.substr(3, 2); 
	sd = str1.c_str();
	dd = atoi(sd);
	data.month = dd;

	str1 = str.substr(6, 4); 
	sd = str1.c_str();
	dd = atoi(sd);
	data.year = dd;
	return data;
}
int main()
{
	ifstream in("input.txt");
	ofstream out("output.txt");
	string minData, D, q;
	in >> minData;
	date M = STR_date(minData);
	if (!in) 
	{
		cout << "Error opening file!" << endl;
		return 0;
	}
	while (in.peek() != EOF)  
	{
		getline(in, q) >> D; 
		date F = STR_date(D);
		if (F.year < M.year)
			M.year = F.year;
	}
	out << "Дата с минимальным годом: " << M.day << "." << M.month << "." << M.year << endl;
	in.close();
	out.close();
	return 0;
}
Прошу помощи!
Изображения
Тип файла: jpg I2M_IVIOYLs.jpg (115.4 Кб, 121 просмотров)
LOkeron вне форума Ответить с цитированием
Старый 14.03.2019, 17:18   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

1. Если у вас в читаемых строках допускаются пробелы, то не используйте форматированный ввод или переопределяйте разделитель.
2.
Код:
getline(in, q) >> D;
Зачем вы прочитали строку, а потом на нее забили? А потом еще и в Д что-то начитали?
3. Есть std::stoi, который понимает и std::string и смещение. Не занимайтесь фигней с указателями и substr.
4. Перед порезкой строки надо убедиться, что длины достаточно.
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файловые потоки testmode2 Помощь студентам 1 08.12.2014 00:41
файловые потоки in tiger() C++ Builder 10 07.07.2011 13:34
Файловые потоки &&blad&& Общие вопросы Delphi 4 05.02.2011 18:22
Файловые потоки. dixonich Операционные системы общие вопросы 6 06.01.2011 19:35
файловые потоки Crab2 Общие вопросы C/C++ 6 22.06.2010 09:39