Си++ чтение строки из файла по ее номеру

markyzz

есть какой-нить достаточно простой способ (да хотя бы и любой) считать содержимое строки зная ее порядковый номер.
строки в файле следующего вида "бла-бла-бла\n" и всегда разной длины.
спасиб за советы!

markyzz

ну, то есть, как я понимаю, направить fgets в нужное русло... или хз

timefim

getline

markyzz

no prototype available

disna

man Керниган-Ричи

markyzz

man код плз

timefim

Всмисли?

markyzz

getline - в какой она библиотеке?

timefim

fstream

margadon

n раз сделать fgets?

Olenenok

man getline

Ivan8209


FILE *fp;
char *buf[_POSIX2_LINE_MAX + 1];
line=fgets(buf, sizeof(buf fp=popen("sed -n 666p filename", "r";
pclose(fp);

---
...Я работаю антинаучным аферистом...

kruzer25

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

Ivan8209

> пытаясь понять, почему же их программа не работает после
> успешной компиляции на другой платформе.
"Быстрый способ" он потому быстрый, потому что быстрый,
а не для "другой" платформы.
Программа будет работать на любой платформе, поддерживающей SUSv3.
Если винда или линукс не умеют, это их личные трудности.
---
"Power to the Apples Right On!"

kokoc88

Ага, а потом разработчики будут месяц трахаться, пытаясь понять, почему же их программа не работает после успешной компиляции на другой платформе.
Ты думаешь, кохтпа пытается помочь? Нет, он просто ебёт мозг. Впрочем, он даже на это по-нормальному не способен. Вот, как надо считывать строку из файла:

int line = 3;
ifstream f("fuckbrain.cpp");
string s;
while_loop(_3 != EOF, switch_statement(
_3 = bind<ifstream::int_type(ifstream::*>(&ifstream::get, _1
case_statement<(ifstream::char_type)EOF>
case_statement<'\n'>(if_then(++_2 > line, _3 = EOF
default_statement(if_then(_2 == line, bind(&string::push_back, &s, _3
(f, *auto_ptr<int>(new int(1.get *auto_ptr<ifstream::char_type>(new ifstream::char_type(0.get;
cout << s << endl;

kokoc88

"Быстрый способ" он потому быстрый, потому что быстрый,
а не для "другой" платформы.
Просили "простой", а не "быстрый". 2:0

vall

пля %) lisp++ ?

kokoc88

пля %) lisp++ ?
Боже упаси. Это всего лишь boost::lambda.

myrka68

int line = 3; ifstream f("fuckbrain.cpp"); string s; while_loop(_3 != EOF, switch_statement( _3 = bind<ifstream::int_type(ifstream::*>(&ifstream::get, _1 case_statement<(ifstream::char_type)EOF> case_statement<'\n'>(if_then(++_2 > line, _3 = EOF default_statement(if_then(_2 == line, bind(&string::push_back, &s, _3 (f, *auto_ptr<int>(new int(1.get *auto_ptr<ifstream::char_type>(new ifstream::char_type(0.get; cout << s << endl;

kruzer25

Программа будет работать на любой платформе, поддерживающей SUSv3
Ага, вот только поддерживают это далеко не все, а про необходимость этой самой поддержки ты упомянуть в своём совете почему-то забыл.

kruzer25

Си. хуле

slonishka

это не си.

kruzer25

Говорят, что си - это ассемблер, замаскировавшийся под человеческий язык

ava3443

Просили "простой"
жжесть

slonishka

как связаны между собой инфернальный кусок кода на boost::lambda и человеческий язык? =)

kruzer25

Вот-вот.

kruzer25

Оставить комментарий
Имя или ник:
Комментарий: