Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> считать до знака конца файла 
:(
    Опции темы
asdf
Дата 31.12.2005, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

Репутация: нет
Всего: 11



Код
int main()
{
    string str;
    while ( char ch=cin.get() ) {
        if ( ch==traits::eof() ) break;
        str += ch;
    }
    cout << foo(str);
    return 0;
}


Цитата
Error E2090 c:\1.cpp 38: Qualifier 'traits' is not a class or namespace name in function main()


Код

if ( ch==traits::eof() ) break;

--------------------
... 
PM MAIL   Вверх
Partizan
Дата 31.12.2005, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



ну и чё эт за ужЫс...он те говорит, что трэйтс - не класс и не пространство имён...
я бы сделал так...
Код

int main()    
{    
/*input file routines */
   string str;    
    do {        
        str += getc(input_filename);    
    }while (!feof(input_filename));    
    cout << foo(str);    
    return 0;    
}



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Void
Дата 31.12.2005, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Код
if (ch == char_traits<char>::eof()) break;

Но данный код:
а) некорректен (хинт: eof() возвращает int_type, а сравнивается с char. Уже обсуждалось не так давно.)
б) есть способы сделать то же самое проще.

Вариант 1:
Код
copy(istreambuf_iterator<char>(cin), istreambuf_iterator<char>(), back_inserter(str));

Вариант 2:
Код
ostringstream os;
os << cin.rdbuf();
str = os.str();




--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
sergejzr
Дата 31.12.2005, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



asdf, читаешь по байту. это довольно долго.

Попробуй чего нибудь такого:
Код

#include <stdio.h>
#include <io.h>
#include <sys/stat.h>

long fileLength(const char* filename)
{
    struct stat buf;
 
    if(stat(filename, &buf) != 0)
    {
        /* Произошла проблема при получении информации */
        return -1;
    }
    return (buf.st_size);
}
int main(int argc, char *argv[])
{
FILE * in;

long  len=fileLength(argv[1]);
char result=new char[len+1];
in=fopen(argv[1],"rb");

string str;

if ((len = read(fileno(in), result, len))<0)
  {
    cout<<"can not read" ; return; 
  }
result[len]=0;
str=result;

  return 0;
}





--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.