type OBJECT = record
i:int;
s1, ... sn: string;
...
f:float;
end;
OBJECTfile= file of OBJECT;
var
File: OBJECTfile;
Типизированые файлы (бинарные)
Код:
создает бинарные файл структур даного типа.
[SIZE="2"][COLOR="DarkRed"]Есть ли подобное в с++?[/COLOR][/SIZE]
Код:
class Test
{
public:
int Right;
string q1;
string q2;
};
Test *Arr[100]; // массив указателей на структуры
...
Arr= new Test;
...
fstream out; out.open(FileName.c_str(), ios::out);
for (int i = 1; i<=Pages; i++)
{
SaveToF(i, &out);
}
...
void __fastcall SaveToF (int i, fstream* out)
{ [FONT="Arial"]//разные методы записи, коды ошибок
out<<Arr->q1<<'\n'; [COLOR="Gray"]//illegal use of pointer[/COLOR]
out<<*Arr->q2<<'\n'; /[COLOR="Gray"]/E2093 'operator*' not implemented in type 'string' for arguments of the same type
[/COLOR]
Test a;
a=*Arr;
out<<a->q1<<'\n'; /[COLOR="Gray"]/E2288 Pointer to structure required on left side of -> or ->*[/COLOR]
[/FONT]
}
{
public:
int Right;
string q1;
string q2;
};
Test *Arr[100]; // массив указателей на структуры
...
Arr= new Test;
...
fstream out; out.open(FileName.c_str(), ios::out);
for (int i = 1; i<=Pages; i++)
{
SaveToF(i, &out);
}
...
void __fastcall SaveToF (int i, fstream* out)
{ [FONT="Arial"]//разные методы записи, коды ошибок
out<<Arr->q1<<'\n'; [COLOR="Gray"]//illegal use of pointer[/COLOR]
out<<*Arr->q2<<'\n'; /[COLOR="Gray"]/E2093 'operator*' not implemented in type 'string' for arguments of the same type
[/COLOR]
Test a;
a=*Arr;
out<<a->q1<<'\n'; /[COLOR="Gray"]/E2288 Pointer to structure required on left side of -> or ->*[/COLOR]
[/FONT]
}
Как его всё таки записать?
Цитата: ApokALEXIS
Код:
void __fastcall SaveToF (int i, fstream* out)
{
out<<Arr->q1<<'\n'; [COLOR="Gray"]//illegal use of pointer[/COLOR]
{
out<<Arr->q1<<'\n'; [COLOR="Gray"]//illegal use of pointer[/COLOR]
Коли ты передаешь fstream через указатель, то указатель то надо разыменовывать. Компилятор тебе об этом и сообщил.
Точно! сам не додумался бы. Спасибо!
Код:
string = "несколько слов через пробел" ;
out<<string;
in>>string;
//string == "несколько";
out<<string;
in>>string;
//string == "несколько";
Как заставить читать всю строку полностью?
Именно со string!!
//in.getline( ... ) требует char*.
out в файл пишет всё полностью.
std::getline
Цитата: ApokALEXIS
in.getline( ... ) требует char*.
!!!
или можно ещё как-то?
обьясни как.
Не метод basic_istream::getline, а функция std::getline.
Код:
template<class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& _Istr,
basic_string<CharType, Traits, Allocator>& _Str
);
template<class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& _Istr,
basic_string<CharType, Traits, Allocator>& _Str,
CharType _Delim
);
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& _Istr,
basic_string<CharType, Traits, Allocator>& _Str
);
template<class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& _Istr,
basic_string<CharType, Traits, Allocator>& _Str,
CharType _Delim
);
Хотябы считывать?
Сеть ничем не защищена, папка со считываемым файлом открыта для сети (школьная сетка)
Былоб хорошо тестовые файлы прямо с учительского компа хавать:cool: