Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

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


Ответ
 
Опции темы
Старый 06.11.2017, 21:56   #1
19skip19
Пользователь
 
Регистрация: 18.10.2017
Сообщений: 10
По умолчанию fstream вывод из txt файла

Здравствуйте! Прошу помочь мне. Как сделать так что бы открывался txt файл и читалось по очереди первая строка, вторая строка и т.д. и выводилось на экран
19skip19 вне форума Ответить с цитированием
Старый 08.11.2017, 11:47   #2
yanich89
Пользователь
 
Регистрация: 20.09.2017
Сообщений: 17
По умолчанию

Вот исходный текст:

Код:
#include "stdafx.h"
#include <Windows.h>
#include <fstream>
#include<iostream>
#include <io.h>
#include <fcntl.h>

using namespace std;

wchar_t* CharStrToWCharStr(const char nStr[], UINT nCodePage = CP_ACP);
//-----------------------------------------------------------------------------------------------------
int main(int nArgC, char* nArgV[])
{
	_setmode(_fileno(stdout), _O_U16TEXT);
	if (nArgC < 2)
	{
		wprintf_s(_T("Использование: FStream.exe <имя файла>\n"));
		return 1;
	}
	fstream oFile(nArgV[1], ios::in);
	if (!oFile.is_open())
	{
		_TCHAR caStr[] = _T("Невозможно открыть файл");
		wchar_t* wcpStr = CharStrToWCharStr(nArgV[1]);
		if (wcpStr)
		{
			wprintf_s(_T("%s <%s>\n"), caStr, wcpStr);
			delete wcpStr;
		}
		else
			wprintf_s(_T("%s\n"), caStr);
		return 1;
	}

	char caBuf[999];
	do
	{
		oFile.getline(caBuf, sizeof(caBuf) - 1);
		if (oFile.gcount())
		{
			wchar_t* wcpStr = CharStrToWCharStr(caBuf);
			if (wcpStr)
			{
				_putws(wcpStr);
				delete wcpStr;
			}
		}
	} while (!oFile.eof());

	return 0;
}
//-----------------------------------------------------------------------------------------------------
// Преобразует однобайтовую строку nStr в многобайтовую
// nCodePage - кодовая страница. По умолчанию системная поумолчанию (для русского языка windows-1251)
// Если нужна кодировка OEM-866, необходимо указать CP_OEMCP
// Полный список кодовых кодировок смотреть в справке к функции MultiByteToWideChar
// Возвращает указатель на строку. Его необходимо после использования удалить оператором delete
// В случае ошибки возвращает NULL
wchar_t* CharStrToWCharStr(const char nStr[], UINT nCodePage)
{
	int iSizeBuf = MultiByteToWideChar(nCodePage, MB_PRECOMPOSED, nStr, -1, NULL, 0);
	if (iSizeBuf)
	{
		_TCHAR* pcBuf = new _TCHAR[iSizeBuf];
		MultiByteToWideChar(nCodePage, MB_PRECOMPOSED, nStr, -1, pcBuf, iSizeBuf);
		return pcBuf;
	}

	return NULL; // Ошибка
}
//-----------------------------------------------------------------------------------------------------
yanich89 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод текста из TXT файла Fallart Общие вопросы C/C++ 5 17.05.2011 18:04
Вывод данных из txt файла на экран (си++) Skrydlov Помощь студентам 0 26.12.2010 21:13
if и чтение+вывод из файла .txt webber9989 PHP 4 24.08.2010 21:13


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS