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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2015, 15:39   #1
piteriv
 
Аватар для piteriv
 
Регистрация: 16.09.2011
Сообщений: 8
По умолчанию Не работает функция getline.

Здравствуйте!
Я пишу программу на WINAPI, чтение и просмотр файлов.
Скажите пожалуйста, почему не работает функция getline(in,st)?
Компилятор выдаёт: error C2065: 'getline' : undeclared identifier
С уважением, Питер.
Код:
	int wmId;
	PAINTSTRUCT ps;
	HDC hdc;
	static TCHAR name[256] = _T("");;
	static OPENFILENAME file;
	std::ifstream in;
	std::ofstream out;
	static std::vector<std::string> v;
	std::vector<std::string>::iterator it;
	std::string st;
	int y;
	switch (message)
	{
	case WM_CREATE:
		file.lStructSize = sizeof(OPENFILENAME);
		file.hInstance = hInst;
		file.lpstrFilter = _T("Text\0*.txt");
		file.lpstrFile = name;
		file.nMaxFile = 256;
		file.lpstrInitialDir = _T("_\\");
		file.lpstrDefExt = _T("txt");
		break;
	case WM_COMMAND:
		wmId = LOWORD(wParam);
		switch (wmId)
		{
		case IDM_FILE_NEW:
			if (!v.empty()) std::vector<std::string>().swap(v);
			InvalidateRect(hWnd,NULL,TRUE);
			break;
		case IDM_FILE_OPEN:
			file.lpstrTitle = _T("Îòêðûòü ôàéë
                                                  äëÿ ÷òåíèÿ");
			file.Flags = OFN_HIDEREADONLY;
			if(!GetOpenFileName(&file)) return 1;
			in.open(name);
			while(getline(in, st)) v.push_back(st);
			in.close();
			InvalidateRect(hWnd,NULL,1);
			break;
Просто Питер.

Последний раз редактировалось Stilet; 10.07.2015 в 19:36.
piteriv вне форума Ответить с цитированием
Старый 10.07.2015, 16:09   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

std::getline же...
p51x вне форума Ответить с цитированием
Старый 10.07.2015, 16:37   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Кстати, сия функция к WINAPI отношения не имеет.
waleri вне форума Ответить с цитированием
Старый 11.07.2015, 05:36   #4
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Кстати, сия функция к WINAPI отношения не имеет.
В WINAPI такой функции вроде вовсе нету. Но можно считывать как-то так:

Код:
bool ReadLine(HANDLE hFile, char *pszBuffer, DWORD dwSize){
    DWORD i, dwRead;
    
    if(!pszBuffer){
        SetLastError(ERROR_INVALID_PARAMETER);
        return false;
    }
    
    if(!ReadFile(hFile,pszBuffer,dwSize,&dwRead,NULL) || (dwRead==0)){
        SetLastError(ERROR_HANDLE_EOF);
        return false;
    }
    
    for(i=0; i<dwRead; i++){
        BYTE c = ((BYTE*)pszBuffer)[i];
        if(c == '\r'){
            ((BYTE *)pszBuffer)[i] = 0;
            if( (i+1 < dwRead) && (((BYTE*)pszBuffer)[i+1] == '\n') ){
                i++;
            }
            break;
        }else{
            if(c == '\n'){
                ((BYTE *)pszBuffer)[i] = 0;
                break;
            }
        }
    }
    
    if(i >= dwRead){
        ((BYTE*)pszBuffer)[i] = 0;
    }else{
        i++;
    }
    
    SetFilePointer(hFile,i - dwRead, NULL, FILE_CURRENT);
    
    return true;
}
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Некорректно работает функция getline() GooderSteel Помощь студентам 15 28.08.2014 22:23
Sendmail работает, функция mail() работает, но есть проблема. PavelNAndreev PHP 8 27.01.2014 12:45
Не работает функция artem611 Паскаль, Turbo Pascal, PascalABC.NET 3 11.04.2011 10:10
Не работает с первого раза getline AxenicX Помощь студентам 2 28.11.2009 23:43
Функция С++ getline() Golovastik Общие вопросы C/C++ 8 30.07.2009 00:20