Задать вопрос
@sidor_tank

Как исправить ошибку при чтении файла на с++?

При открытии файла при помощи wifstream программа крашится и выдает такую ошибку. Файл формата txt существует и путь к нему указан верно. Может у кого нибудь была похожая проблема?
5b0d6a89ddd7f213939101.png
Код функции main:
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
	//setlocale(LC_ALL, "rus");
	wifstream nja(L"text1.txt");
	if (!nja.is_open())
		cout<<"Ошибка!";
	Parm::PARM parm;
	cout << argc;
	cout << "---- Тест Error::geterror   ---" << endl << endl;
	try { ERROR_THROW(104); }
	catch (Error::ERROR e)
	{
		cout << "Ошибка " << e.id << ": " << e.message << endl << endl;
	};

	cout << "---- Тест Error::geterrorin   ---" << endl << endl;
	try { ERROR_THROW_IN(111, 7, 7); }
	catch (Error::ERROR e)
	{
		cout << "Ошибка " << e.id << ": " << e.message
			<< ", строка " << e.inext.line
			<< ", позиция " << e.inext.col << endl << endl;
	};

	cout << "---- Тест Parm::getparm   ---" << endl << endl;
	try
	{
		parm = Parm::getparm(argc, argv);
		wcout << L"-in:" << parm.in << L", -out:" << parm.out << L", -log:" << parm.log << endl << endl;
	}
	catch (Error::ERROR e)
	{
		cout << "Ошибка " << e.id << ": " << e.message << endl << endl;
	};
	cout << "---- Тест Parm::getin   ---" << endl << endl;
	try
	{
		In::IN in = In::getin(parm.in);
		cout << in.text << endl;
		cout << "Всего символов: " << in.size << endl;
		cout << "Всего строк: " << in.lines << endl;
		cout << "Пропущено: " << in.ignor << endl;
	}
	catch (Error::ERROR e)
	{
		cout << "Ошибка " << e.id << ": " << e.message << endl << endl;
	};
	system("pause");
	return 0;
}

Содержимое stdafx.h:
#pragma once

#include "targetver.h"

#include <fstream>
#include <iostream>
#include <tchar.h>
#include <stdio.h>
#include <cwchar>
#include <stdio.h>
#include <cstring>
#include <wchar.h>
#include <locale>

#include "Error.h"
#include "Parm.h"
#include "In.h"

using namespace std;
  • Вопрос задан
  • 358 просмотров
Подписаться 1 Сложный 1 комментарий
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
Покажите стек вызовов. Сейчас вы смотрите на STL-ный исходник, маловероятно что ошибка в нём, скорее всего вы криво вызываете стандартную функцию. Хотелось бы увидеть стек и как вы вызываете первую библиотечную функцию на этом стеке.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Велика вероятность, что ошибка в mods[mode]. Четырнадцать значений, записанных как 4+4+3+3 — что-то странное. Вы явно хотели сделать «кубик» из четырёх флагов, от младшего к старшему — W, A (причём работает как простое W, если A без W), B, RW
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы