Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вопрос о переносимости одного куска кода


Автор: Chaos A.D. 17.2.2005, 01:35
Подскажите, является ли переносимым вот такой вот простой код :

Код

 ifstream in("/path/to/my/file");
 string buf;
 while ( !in.eof() )
 {
   in >> buf;
   cout << buf << ' ';
 }



Че-то на отрез отказывается компилиться в линуксе (gcc), а вот в винде (BCB6) с пол пинка. Вроде очевидно, что в STL у ifstream перегружен >> для аргумента string, но ругается именно на него. Что-же получается, STL STL-у рознь чтоли? И еще вопрос. У меня еще свежи воспоминания о том, как я юзал getline, с аргументами ifstream& и string. Смотрю своими глазами на свой же код, написаный ранее - все работает. Сегодня пишу такое-же (компилятор не менял, инклюды не забывал) - матерится на то, что сигнатура этой функции осталась в наследство еще от C, и требует трех параметров - char**, size_t и FILE*. Вот такие чудеса. В чем дела?

Автор: maxim1000 17.2.2005, 11:02
Цитата
Че-то на отрез отказывается компилиться в линуксе (gcc),

мои скромные познания в Linux'е говорят о том, что для компиляции C++ используется g++, а не gcc...

Автор: Doc_d0s 17.2.2005, 20:18
Цитата
мои скромные познания в Linux'е говорят о том, что для компиляции C++ используется g++, а не gcc...

Не знаю, что ты курил?

Автор: Chaos A.D. 17.2.2005, 20:29
Да не курил я, просто опечатался. За инет плачу, как все чесные граждане smile, поэтому торопился. А так, конечно его и юзал. Пардон за опечатку.

Автор: Fixin 17.2.2005, 20:43
пробуй стринг на чар массив менять.

Автор: Hroft 21.2.2005, 10:25
Ну вообще-то
Код
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
       fstream in("/home/lalala");
       string buf;
       while ( !in.eof() ) {
               in >> buf;
               cout << buf << ' ';
       }
       return 0;
}

прекрасно работает...
ALT какой-то, g++ 3.3.3.

Автор: pablo 21.2.2005, 10:48
Цитата
Код

  fstream in("/home/lalala");
А лала, ето файл или директория ?

Автор: Hroft 21.2.2005, 11:23
smile
Удивительно...
Тебе так хочется узнать мой логин и структуру каталогов в $HOME?
Я запускал с указанным исходником в качестве строчки, для проверки, а потом заменил, не думал, что могут возникнуть вопросы...

Автор: pablo 21.2.2005, 11:47
Ну тогда это меняет ход дела.

Автор: chaos 21.2.2005, 12:13
а может такое решение подойдет:
Код

#include <fstream>
#include <algorithm>
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
fstream in(argv[1]);
istream_iterator<char> iin(in);
copy(iin, istream_iterator<char>( ), ostream_iterator<char>(cout, ""));
return 0;
}

Автор: Ni@m 25.2.2005, 01:59
попробуй с fopen открівать файл и работать с fread, fwrite. И поточнее можно описать ошибку, тоесть что відает компилятор.

Автор: Chaos A.D. 25.2.2005, 23:19
Спасибо за помошь, компилятор похоже отпустило.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)