• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Вопрос по созданию и чтению файла

  • Автор темы Artur1987
  • Дата начала
S

Seva

это понятно, а как прочитать определённую (!) строку, как и спрашивал, например, 100235? тут надо бы как-то в цикле определять окончания строк и считать их... вот как? как определить конец строки, если количество знаков неизвестно и из каких знаков состоит строка-тоже?
 
G

gamecreator

Код:
char pszfname[]="Data.txt";
int n; //номер твоей строки
ifstream sfile(pszfname);
if (sfile.is_open())
{
char tempstr[400];
for(i=0;i<n;i++) sfile.getline(tempstr,400,'\n'); //если в строке может быть больше 400 символов, то кроме этой строки следует изменить еще и строку выше
}
потом с помощью getline читаем нужную строку
 
S

Seva

выглядит заманчиво... а что за ifstream? компилятор говорит, что не знает такого... может какую библиотеку надо подключить? в msdn'e я не нашёл какую, там вообще про ifstream мало что написано... я пробовал и "ifstream.h" и "fstream.h" подключать (и то же без .h), всё одно- undeclared identifier. спасибо и с наступающим!
 
G

gamecreator

#include <fstream.h>
ты же не описываешь эту библиотеку в проекте. для стандартных библиотек обьявление идет в <> скобках
 
S

Seva

:blink: ну, ессно, я и в<> писал... что интересно тот же код, но в консольной программе компилируется отлично! я уже месяц бьюсь, консольную программу написал, а вот с win32- проблема! мож, <fstream> или<fstream.h> нужно прописывать в каком-то другом файле- не в *.cpp? если не в лом, посмотри код:

Код:
// lineDlg.cpp : implementation file
//

#include <fstream.h>
#include "stdafx.h"
#include "line.h"
#include "lineDlg.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLineDlg dialog

CLineDlg::CLineDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLineDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLineDlg)
m_nomer = 0;
m_stroka = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CLineDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLineDlg)
DDX_Text(pDX, IDC_EDIT_NOMER, m_nomer);
DDX_Text(pDX, IDC_EDIT_STROKA, m_stroka);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CLineDlg, CDialog)
//{{AFX_MSG_MAP(CLineDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON, OnButton)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLineDlg message handlers

BOOL CLineDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);			// Set big icon
SetIcon(m_hIcon, FALSE);		// Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
}

void CLineDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CLineDlg::OnPaint() 
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CLineDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

void CLineDlg::OnButton() 
{
int i;
// TODO: Add your control notification handler code here
char pszfname[]="Data.txt";
int n; //номер твоей строки
ifstream sfile(pszfname);
if (sfile.is_open())
{
char tempstr[400];
for(i=0;i<n;i++) sfile.getline(tempstr,400,'\n');
UpdateData(TRUE);
m_stroka=tempstr;
m_nomer=i;
UpdateData(FALSE);

}
}

в чём тут эти ошибки:

--------------------Configuration: line - Win32 Debug--------------------
Compiling...
lineDlg.cpp
D:\Program Files\Microsoft Visual Studio\WinProjects\line\lineDlg.cpp(183) : error C2065: 'ifstream' : undeclared identifier
D:\Program Files\Microsoft Visual Studio\WinProjects\line\lineDlg.cpp(183) : error C2146: syntax error : missing ';' before identifier 'sfile'
D:\Program Files\Microsoft Visual Studio\WinProjects\line\lineDlg.cpp(183) : error C2065: 'sfile' : undeclared identifier
D:\Program Files\Microsoft Visual Studio\WinProjects\line\lineDlg.cpp(184) : error C2228: left of '.is_open' must have class/struct/union type
D:\Program Files\Microsoft Visual Studio\WinProjects\line\lineDlg.cpp(187) : error C2228: left of '.getline' must have class/struct/union type
Error executing cl.exe.

line.exe - 5 error(s), 0 warning(s)
 
P

Pasha

Для: gamecreator
<fstream> - часть стандарта C++, <fstream.h> - нет. <fstream> есть в 3-х последних версиях Visual Studio, <fstream.h> - нет. С "#include <fstream>" компилируется, с #include <fstream.h> - нет. Так что он явно не лучше, а совсем наоборот.
 
S

Seva

Для: European

на строку std::ifstream
ругается: error C2653: 'std' : is not a class or namespace name

gamecreator
а в этом месте:
#undef THIS_FILE
char THIS_FILE[] = __FILE__;
вот так: syntax error : missing ';' before type 'char'
и fatal error C1004: unexpected end of file found
причём ; в конце предыдущей строки не помогает.
 
G

gamecreator

переустанови среду

Для: Pasha
ты бы знал как я однажды намучался с <fstream>, <iostream> и using namespace std
кстати в <fstream> разве cin и cout есть?
а насчет наличия файлов - так я с borland 3.1 скопирую
 
P

Pasha

<!--QuoteBegin-gamecreator+30:12:2007, 17:34 -->
<span class="vbquote">(gamecreator @ 30:12:2007, 17:34 )</span><!--QuoteEBegin-->кстати в <fstream> разве cin и cout есть?
[snapback]91872" rel="nofollow" target="_blank[/snapback]​
[/quote]А дожны быть? Они в <iostream>.
<!--QuoteBegin-gamecreator+30:12:2007, 17:34 -->
<span class="vbquote">(gamecreator @ 30:12:2007, 17:34 )</span><!--QuoteEBegin-->а насчет наличия файлов - так я с borland 3.1 скопирую
[snapback]91872" rel="nofollow" target="_blank[/snapback]​
[/quote]... и получишь STL из Borland С++ 3.1, 15-летней давности, не соответствующую стандарту 98-го года, без поддержки юникода ... Отличный будет сюрприз для тех, кто за тобой будет код дописывать.

<!--QuoteBegin-Seva+30:12:2007, 16:59 -->
<span class="vbquote">(Seva @ 30:12:2007, 16:59 )</span><!--QuoteEBegin-->#undef THIS_FILE
char THIS_FILE[] = __FILE__;
вот так: syntax error : missing ';' before type 'char'
[snapback]91871" rel="nofollow" target="_blank[/snapback]​
[/quote]Скорее всего в line.h или lineDlg.h точки с запятой не хватает, например, после объявления класса.
 
G

gamecreator

А дожны быть? Они в <iostream>.
ну в <fstream.h> есть, значит по логике должно быть и там. и ЕМНИП, <fstream> и <iostream> нельзя подключить одновременно

... и получишь STL из Borland С++ 3.1, 15-летней давности, не соответствующую стандарту 98-го года, без поддержки юникода
не думаю что за 15 лет там что-то поменялось. да и поддержка юникода мне не надо триста лет.

Отличный будет сюрприз для тех, кто за тобой будет код дописывать.
вот он пусть и мучается с теми библиотеками, а я воспользуюсь проверенным методом.
 
P

Pasha

<!--QuoteBegin-gamecreator+31:12:2007, 13:33 -->
<span class="vbquote">(gamecreator @ 31:12:2007, 13:33 )</span><!--QuoteEBegin--><fstream> и <iostream> нельзя подключить одновременно
[snapback]91912" rel="nofollow" target="_blank[/snapback]​
[/quote]А мужики то не знают... Это что-то из серии "VC++ 6 нельзя запустить под вистой"?

<!--QuoteBegin-gamecreator+31:12:2007, 13:33 -->
<span class="vbquote">(gamecreator @ 31:12:2007, 13:33 )</span><!--QuoteEBegin-->ну в <fstream.h> есть, значит по логике должно быть и там...не думаю что за 15 лет там что-то поменялось.
[snapback]91912" rel="nofollow" target="_blank[/snapback]​
[/quote]Ну вот видишь, поменялось же. Стандарт утвердили, потом поправки к нему. Странные люди, правда? Можно ведь колбасить на старой и неподдерживаемой библиотеке, и не заморачиватся.
<!--QuoteBegin-gamecreator+31:12:2007, 13:33 -->
<span class="vbquote">(gamecreator @ 31:12:2007, 13:33 )</span><!--QuoteEBegin-->да и поддержка юникода мне не надо триста лет.
[snapback]91912" rel="nofollow" target="_blank[/snapback]​
[/quote]Ты американец? Или живешь в 1707-м? Ну, или просто твой код ни с чем не взаимодействует и запскается только на твоей машине? Тогда да, можно не думать о существовании юникода.
<!--QuoteBegin-gamecreator+31:12:2007, 13:33 -->
<span class="vbquote">(gamecreator @ 31:12:2007, 13:33 )</span><!--QuoteEBegin-->вот он пусть и мучается с теми библиотеками, а я воспользуюсь проверенным методом.
[snapback]91912" rel="nofollow" target="_blank[/snapback]​
[/quote]Проверенная - это проверенная за 10 лет кучей программистов STL. Но ты выбираешь древнюю нестандартную реализацию, заточенную под 16-ти битный код, под int-ы в 2 байта...ССЗБ...вот только не надо учить такому других людей.
 
D

Dimmuborgir

#include <fstream>
using namespace std;

все должно работать
 
L

L

Привет всем
У меня такой вопрос какое поле лучше использовать для вывода информации из файла и как это сделать?
Поле RichTextBox работает только с определёнными форматами .txt .doc и другие распрастроненные форматы не поддерживаются
В поле ListBox недогоняю как это зделать вроде всю инфу просмотрел, примеры, в инете тоже ничего подходящего не нашёл
Вообщем немогу найти аналог поля memo из Delphi

зарание Спасибо за помощь!!!!!!
 
G

gamecreator

что за memo? а editbox пробовал?

зы. если тебе привычней делфи может попробуешь Borland C++ Builder?
 
L

L

чето не видел в Visual C++ editbox его нет
хочу освоить Visual C++
 
G

gamecreator

на панели инструментов кнопка с надписью ab|
 
P

Pasha

Для: Lям
Растягиваешь обычный Edit Control до нужного размера, включаешь ему Multiline и скроллбары. Получаешь полный аналог memo.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!