Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

CStdioFile - bad ptr (Visual C++)

612  1 2 3 4 5 6 7 8 9 все
Murr коренной житель12.05.06 15:00
Murr
NEW 12.05.06 15:00 
в ответ scorpi_ 12.05.06 14:37
int main()
{
transform( istream_iterator<line>( ifstream("source.txt") ),
istream_iterator<line>(),
ostream_iterator<string>( ofstream("dest.txt"), "\n" ),
funct() );
}
-----
Надо было довести до совершенства:
int main()
{
TMyTransformer.Transform( istream_iterator<line>( ifstream("source.txt") ),
istream_iterator<line>(),
ostream_iterator<string>( ofstream("dest.txt"), "\n" ),
funct() );
}
где Transform - статический метод TMyTransformer...
А то опять недоученным останется...
#81 
Simple Nothing is f*cked12.05.06 15:04
Simple
NEW 12.05.06 15:04 
в ответ Murr 12.05.06 15:00
Че-то я не понял смысла. Это если закрыть глаза на TMyTransformerточкаTransform :-D
#82 
voxel3d коренной житель12.05.06 15:05
voxel3d
NEW 12.05.06 15:05 
в ответ scorpi_ 12.05.06 14:37
Сорри, проверить не могу, посему, возможно, глупые вопросы.
В ответ на:
istream& operator>>( istream& i, line& s )
{
s.clear();
getline( i, s );
return i;
}


перед выходом, надо добавить '\n' к строке?
В ответ на:
struct funct : unary_function< string, line >
...
string operator()( line l )


первый аргумет, это аргумент, последний -- возвращаемое значение. Аргументу -- констанстность и ссылочность. У тебя ниже operator() объявлен. Вероятно, в объявлении структуры ты местами перепутал string с line -ом?
Dropbox - средство синхронизации и бэкапа файлов.
#83 
Murr коренной житель12.05.06 15:10
Murr
NEW 12.05.06 15:10 
в ответ Simple 12.05.06 15:04
Смысл в том, что функции, как таковой и за исключением main(), существовать не должно. Только методы...
#84 
  scorpi_ скептик12.05.06 15:10
NEW 12.05.06 15:10 
в ответ scorpi_ 12.05.06 14:37
В ответ на:
#include <string>
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <sstream>
#include <set>
using namespace std;
const char* ar_tokens[] = { "#if", "#ifdef", "#ifndef", "#endif", "#error", "#elif", "#else", "#include" };
string to_string( int i )
{
stringstream ss;
ss << i;
return ss.str();
}
class line : public string {};
istream& operator>>( istream& i, line& s )
{
s.clear();
getline( i, s );
return i;
}
struct funct : unary_function< const line&, string >
{
set< string > tokens_;
int line_number_;
string token_;
bool is_preprocessor_token( const string& l )
{
string::size_type tok_begin = l.find_first_not_of( " \t" );
if ( string::npos != tok_begin && l[tok_begin] == '#' )
{
string::size_type tok_end = l.find_first_of( " \t" );
token_ = ( string::npos == tok_end ) ?
l.substr( tok_begin ) : l.substr( tok_begin, tok_end - tok_begin );
if ( tokens_.find( token_ ) != tokens_.end() )
return true;
}
return false;
}
public:
funct() : line_number_(0)
{
for( int i = 0; i < sizeof( ar_tokens ) / sizeof( char* ); ++i )
tokens_.insert( ar_tokens[ i ] );
}
string operator()( const line& l )
{
++line_number_;
return is_preprocessor_token( l ) ? to_string( line_number_ ) : l;
}
};
int main()
{
transform( istream_iterator<line>( ifstream("source.txt") ),
istream_iterator<line>(),
ostream_iterator<string>( ofstream("dest.txt"), "\n" ),
funct() );
}


#85 
  scorpi_ скептик12.05.06 15:12
NEW 12.05.06 15:12 
в ответ voxel3d 12.05.06 15:05
В ответ на:
перед выходом, надо добавить '\n' к строке?

А у меня вот эта строчка это делает: ostream_iterator<string>( ofstream("dest.txt"), "\n" ),
В ответ на:
перепутал string с line -ом?

Ага. Исправил.
#86 
Simple Nothing is f*cked12.05.06 15:13
Simple
NEW 12.05.06 15:13 
в ответ Murr 12.05.06 15:10
Так это ж ф-я из STL.
#87 
  scorpi_ скептик12.05.06 15:13
NEW 12.05.06 15:13 
в ответ Murr 12.05.06 15:00
В ответ на:
где Transform - статический метод TMyTransformer...

Чушь здесь всякую не неси...
#88 
Simple Nothing is f*cked12.05.06 15:13
Simple
NEW 12.05.06 15:13 
в ответ scorpi_ 12.05.06 15:10
Во тебя заколбасило :-D
#89 
  scorpi_ скептик12.05.06 15:16
NEW 12.05.06 15:16 
в ответ Simple 12.05.06 15:13
Endlich mal ein C++-Thema ;)
#90 
Murr коренной житель12.05.06 15:19
Murr
NEW 12.05.06 15:19 
в ответ scorpi_ 12.05.06 15:13
Ок, буду нести _пятничную_ ахинею...
#91 
Simple Nothing is f*cked12.05.06 15:22
Simple
NEW 12.05.06 15:22 
в ответ scorpi_ 12.05.06 15:16
LOL
А теперь напиши то же без использования STL :-D
#92 
Russman старожил12.05.06 15:24
Russman
NEW 12.05.06 15:24 
в ответ Simple 12.05.06 15:22
> А теперь напиши то же без использования STL
Еретика на костер!
---
До пенсии далеко, а pазвлекаться надо
#93 
  scorpi_ скептик12.05.06 15:24
NEW 12.05.06 15:24 
в ответ Simple 12.05.06 15:22
С использованием сишных функций? Лень...
#94 
Simple Nothing is f*cked12.05.06 15:35
Simple
NEW 12.05.06 15:35 
в ответ scorpi_ 12.05.06 15:24
Зачем? MFC :))
#95 
voxel3d коренной житель12.05.06 15:35
voxel3d
NEW 12.05.06 15:35 
в ответ scorpi_ 12.05.06 15:24
Опять же посмотерть не могу. Ещ╦ вопрос. Функтор созда╦тся на каждую итерацию? Если да, то funct::set<string> tokens_; сделать статическим.
Dropbox - средство синхронизации и бэкапа файлов.
#96 
Simple Nothing is f*cked12.05.06 15:36
Simple
NEW 12.05.06 15:36 
в ответ Russman 12.05.06 15:24
Че сразу еретик? Я в другую дверь вошел.
#97 
Simple Nothing is f*cked12.05.06 15:39
Simple
NEW 12.05.06 15:39 
в ответ voxel3d 12.05.06 15:35
Нет, один раз, судя по коду.
#98 
  scorpi_ скептик12.05.06 15:43
NEW 12.05.06 15:43 
в ответ Simple 12.05.06 14:59
В ответ на:
Пока только смотрю. После выигрыша на тотализаторе хочется потрясти мошной :-D Но обламываюсь потихоньку.

А я купил Tablet-PC, загрузил в него 3 гига книг, лежу и читаю
#99 
Simple Nothing is f*cked12.05.06 15:44
Simple
12.05.06 15:44 
в ответ scorpi_ 12.05.06 15:43
Красиво жить не запретишь :))
А я - лазер. Только неохота все равно такую кучу бумаги изводить.
1 2 3 4 5 6 7 8 9 все