ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

21.06.2009, 20:50
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
Ant1b10t1k
типа такого
Код:
void cycle_input(ifstream& file)
{
if(file.eof())
file.seekg(0, ios_base::beg);
}
void main()
{
ifstream fin( "1.txt" );
ifstream fim( "2.txt" );
ifstream fib( "3.txt" );
string mlstr;
string mainstr;
string str_name;
do
{
getline( fib, str_name );
getline( fin, mainstr );
cycle_input(fin);
getline( fim, malstr );
cycle_input(fim);
somefunction(str_name, mainstr, malstr);
}
while(!fib.eof());
}
|
|
|

21.06.2009, 22:25
|
|
Новичок
Регистрация: 18.06.2009
Сообщений: 17
Провел на форуме: 421610
Репутация:
5
|
|
не вышло что то у меня, вот отрвок. кода что сдесь не так. Напомню мне нужно брать с файла потока(fib) пока он не будет окончен а с остальных брать по строке, и если дошло до конца брать сначала и так пока файл поток (fib) не будет окончен.
Код:
void cycle_input(ifstream& file)
{
if(file.eof())
file.seekg(0, ios_base::beg);
}
Код:
do
{
cycle_input(fin);
cycle_input(fim);
cycle_input(fit);
cycle_input(fite);
cycle_input(file);
getline( fib, str_1 );
getline( fin, mainstr );
getline( fim, mailstr );
getline( fit, str_themes);
getline( fite, str_text );
getline (file,str_name);
size_t pos = mainstr.find( ';' );
size_t pos2 = mainstr.find( '\0' );
size_t pos3 = mailstr.find(';');
size_t pos4 = str_1.find('\0');
size_t pos5 = str_themes.find('\0');
size_t pos6 = str_text.find('\0');
size_t pos7 = str_name.find('\0');
if ( pos !=string::npos )
{
string strlog = mainstr.substr( 0, pos);
string strp1 = mainstr.substr(pos+1,pos2);
string strm2 = mailstr.substr(0,pos3);
string m3 = str_base.substr(0,pos4);
string themes = str_themes.substr(0, pos5);
string text = str_text.substr(0, pos6);
string name=str_name.substr(0, pos7);
sendbuffer(strlog,strp1,strm2, m3, themes, text, name);
}
}
while(!fib.eof());
|
|
|

22.06.2009, 02:34
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
мда. file.seekg(0, ios_base::beg); работает только при чтении файла, открытого с можификатором binary. чтото как то потоки ввода ацки кривые и я не вижу адекватного способа сбросить указатель чтения на начало файла. попробуй закрыть открыть. или просто юзай другой способ чтения
через жопу но работает.
Код:
void cycle_input(ifstream& file, string& filename)
{
if(!file.eof())
return;
file.close();
file.clear();
file.open(filename.c_str(), ios::in);
}
void main()
{
string fin_filename = "1.txt";
string fim_filename = "2.txt";
string fib_filename = "3.txt";
ifstream fin(fin_filename.c_str() );
ifstream fim( fim_filename.c_str() );
ifstream fib( fib_filename.c_str() );
string mlstr;
string mainstr;
string str_name;
do
{
getline( fib, str_name );
cycle_input(fin, fin_filename);
getline( fin, mainstr );
cycle_input(fim, fim_filename);
getline( fim, mlstr );
}
while(!fib.eof());
system("pause");
}
Последний раз редактировалось Ra$cal; 22.06.2009 в 02:39..
|
|
|

22.06.2009, 18:45
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Такой вопрос:
Существует ли в языке С++ команда которая полностью очищает содержимое файла
не удаляя сам файл ?
Нет, по крайней мере в стандартной библиотеке.
|
|
|

22.06.2009, 19:47
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
WinMain(), вопрос был: есть ли такая функция в стандарте языка.
|
|
|

23.06.2009, 07:31
|
|
Участник форума
Регистрация: 23.08.2008
Сообщений: 143
Провел на форуме: 1149516
Репутация:
52
|
|
Короче, проблемма вот в чем.
Есть цикл for(;  , в нем находится вся программа, так же есть переменная live.
Если она ровняется 1, то выполняется одно действие, если 2, то другое, если 3, то
break;
А если ввести другие знаки, кроме цифр, то получится так, что for(;  будет работать безконечно.
Подскажите, как профиксеть ?
Последний раз редактировалось Useroff; 23.06.2009 в 08:26..
|
|
|

23.06.2009, 07:47
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Напиши код. Я нифига не понял ^^
Возможно тебе поможет оператор case и использование default.
Откуда взялся while, если цикл for. Или цикл просто бесконечный.
Вообщем насколько я понял так:
Код:
while(1) {
switch( ) {
case 0:
case 1:
...
case N:
default:
}}
Любые действия со стороны юзера ты можешь контролировать. Или же ты можешь ввести обработку исключений.
Последний раз редактировалось Fata1ex; 23.06.2009 в 07:51..
|
|
|

23.06.2009, 08:25
|
|
Участник форума
Регистрация: 23.08.2008
Сообщений: 143
Провел на форуме: 1149516
Репутация:
52
|
|
Ладн, задам вопрос вот так:
Есть переменная live
Код:
for(;;) {
float live
cin >> live;
if (live==1)
{
Код...
}
if (live==2)
{
Код...
}
if (live=3)
{
cout << "Bye !";
break;
}
}
Как сделать так, чтобы в переменную live, нельзя было записать ничего кроме цифр ?
|
|
|

23.06.2009, 08:33
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Ответ я, как ни странно, уже дал.
|
|
|

23.06.2009, 08:43
|
|
Участник форума
Регистрация: 23.08.2008
Сообщений: 143
Провел на форуме: 1149516
Репутация:
52
|
|
Ответ я, как ни странно, уже дал.
Сорри, стормазил я чет, совсем забыл про else.
Терь написал
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|