Вход на сайт
CStdioFile - bad ptr (Visual C++)
NEW 12.05.06 12:29
в ответ Simple 12.05.06 12:20
Возьми исходники RatC и посмотри как и что там раскидано. Если исходники не найдешь - там синтасический анализатор реализован в виде рекурсивного спуска - когда что-то в нем дохнет - найти концы просто не реально - около 20К if-while-do...
В свое время он меня настолько утомил, что пришлось его заменить... таблицей и полустраницей кода...


NEW 12.05.06 12:57
Боже упаси! Я как раз советую начинать с "Accelerated C++" Кёнига, потому что он с самого начала приучает использовать std::string вместо char* и std::vector вместо масивов...
На английском могу её кинуть. У Анатоликса наверно лучше начать с Липпмана.
в ответ Russman 12.05.06 12:35
В ответ на:
Может с Kernigan & Ritchie? :-)
Может с Kernigan & Ritchie? :-)
Боже упаси! Я как раз советую начинать с "Accelerated C++" Кёнига, потому что он с самого начала приучает использовать std::string вместо char* и std::vector вместо масивов...
На английском могу её кинуть. У Анатоликса наверно лучше начать с Липпмана.
12.05.06 13:15
> Мне трудно понять в данный момент разницу между C++ и Visual С++.
> меня обижают. Нельзя так сходу говорить. Если вы такой опытный в программировании, то почему бы не сказать как лучше писать.
Он тебе сказал не к тому, что Visual C++ это не C++. Ты пишешь код "в духе" C и вдобавок у тебя каша полная, тебе при желании нельзя помочь.
Давай попробую основу показать для копирования контента с возможностью его преобразования, может быть, оно тебе полезно будет.
Проверку файла назначения соответственно делай до, нефиг всё в одну кучу лепить, а парсинг строк в funct::operator() дёргай, возвращаемое значение будет записываться в результирующий файл.
2аll: критика приветствуется...
> меня обижают. Нельзя так сходу говорить. Если вы такой опытный в программировании, то почему бы не сказать как лучше писать.
Он тебе сказал не к тому, что Visual C++ это не C++. Ты пишешь код "в духе" C и вдобавок у тебя каша полная, тебе при желании нельзя помочь.
Давай попробую основу показать для копирования контента с возможностью его преобразования, может быть, оно тебе полезно будет.
В ответ на:
using namespace std;
class line : public string {};
istream& operator>>(istream& i, line& s)
{
s.clear();
getline(i, s);
s.push_back('\n');
return i;
}
struct funct : unary_function<const line&, line>
{
line operator()(const line& l) const
{
return l;
}
};
void foo()
{
ifstream is("source.txt");
istream_iterator<line> ii(is), eof;
ofstream os("dest.txt");
ostream_iterator<line> oo(os);
transform(ii, eof, oo, funct());
}
Проверку файла назначения соответственно делай до, нефиг всё в одну кучу лепить, а парсинг строк в funct::operator() дёргай, возвращаемое значение будет записываться в результирующий файл.
2аll: критика приветствуется...
Dropbox - средство синхронизации и бэкапа файлов.
NEW 12.05.06 13:22
> зы Но обычно, если указатель нулевой, ошибка другая...
Угу, я пургу прогнал. У него где-то "портится" хэндл на файл в ofile, где - убей, понять не могу. Потенциальных мест дофига, где именно, хрен поймёшь в таком коде.
Угу, я пургу прогнал. У него где-то "портится" хэндл на файл в ofile, где - убей, понять не могу. Потенциальных мест дофига, где именно, хрен поймёшь в таком коде.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 12.05.06 14:37
Просто скопировать файл можно и так:
#include <string>
#include <fstream>
#include <iterator>
#include <algorithm>
using namespace std;
int main()
{
copy( istream_iterator<string>( ifstream("source.txt") ),
istream_iterator<string>(),
ostream_iterator<string>( ofstream("dest.txt"), "\n") );
}
а вот это ближе к проблеме ОП:
смотри update ниже - ошибка с tok_end