Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 5.00
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
#1

Как правильно открыть файл и считать из него строку? - C++

08.09.2011, 11:52. Просмотров 5549. Ответов 40
Метки нет (Все метки)

Прювет!
подскажите пажалста, как правильно открыть и считать строку из файла.
весь функционал по обработке уже написал, а тут застрял как внебрачный ребенок буратино >_<

C++
1
2
3
4
5
6
7
8
9
10
11
12
    std::ifstream file("C:\\interface.txt");
    std::string lines;
 
    if(file.is_open()){
            std::string buff;
            while( !file.eof()){
                    std::getline(file, buff);
                    lines += buff + '\n';
            } file.close();
            std::cout << lines << std::endl;
    } else
            std::cerr << "Error open file!\n";
ошибка: variable 'std::ifstream file' has initializer but incomplete type
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2011, 11:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно открыть файл и считать из него строку? (C++):

Открыть файл и записать в него строку - C++
Здравствуйте! Подскажите пожалуйста почему вылетает такая ошибка, когда запускаю в visual studio? #include &quot;stdafx.h&quot; #include...

Как открыть файл в требуемой для него программе? - C++
как указать программе на файл и просмотреть информацию и запустить при желании? расширение может быть любое...

Как при помощи ф-ий read/write записать в файл, а потом считать с него - C++
Такой вопрос! Как при помощи ф-ий read/write записать в файл, а потом считать с него различные типы данных, как int,double, char, char. ...

Как правильно считать и записать в файл - C++
Вот такие вот классы, как правильно записать, а затем считать из файла class Base { public: Base(string s=&quot;&quot;):name(s){} virtual...

Как правильно считать побайтово файл в массив - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cstdlib&gt; #include &lt;time.h&gt; #include &lt;string&gt; using namespace std; int...

Как правильно открывать файл и записывать/читать из него - C++
Как правильно открывать файл и записывать/читать из него? На разных сайтах и учебниках есть различные примеры етого но везде разные ...

40
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
09.09.2011, 13:28 #31
хорошо, образ раздела в 34 Гб?

Добавлено через 27 секунд
Обе проблемы уже решены.
0
-=ЮрА=-
Заблокирован
Автор FAQ
09.09.2011, 14:12 #32
Цитата Сообщение от talis Посмотреть сообщение
хорошо, образ раздела в 34 Гб?
- хорошо ОЗУ 64 Гб
В карифорнии есть суперкомп производительнотью 10^13 там ОЗУ по моему терабайтик - ну вот я им
0
talis
09.09.2011, 14:13
  #33

Не по теме:

-=ЮрА=-, удачи вам в оплате счёта за электроэнергию.

0
Deviaphan
09.09.2011, 14:15
  #34

Не по теме:

Ага, и как видно из кода, все 32 гига выводится в cout... читайте...

1
-=ЮрА=-
Заблокирован
Автор FAQ
09.09.2011, 14:30 #35
Цитата Сообщение от Deviaphan Посмотреть сообщение
Ага, и как видно из кода, все 32 гига выводится в cout... читайте..
- пусть частями из str выводит, лишь бы ОЗУ хватало



PS:Ребят это к вам
Не по теме:
Кукушка хвалит петуха за то что хвалит он кукушку
-
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
09.09.2011, 14:32 #36
-=ЮрА=-, проблемы этого топика решены. Ответы даны и приняты. Чего вы добиваетесь?
0
Deviaphan
09.09.2011, 15:06
  #37

Не по теме:

Цитата Сообщение от talis Посмотреть сообщение
Чего вы добиваетесь?
Стресс-тестирование форума.

1
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
09.09.2011, 15:08  [ТС] #38
вспомним тему "программа Hello world!" ))

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

на то и существую программисты. их задача - найти наиболее оптимальное решение
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
09.09.2011, 16:50 #39
Цитата Сообщение от co6ak Посмотреть сообщение
на то и существую программисты. их задача - найти наиболее оптимальное решение

Не по теме:

Оптимум - наилучшее из всех возможных. Поэтому не бывает "более оптимального" или "менее оптимального". Бывает хорошее, лучше (более хорошее), и наилучшее (оно же "оптимальное"). Вы же не скажите "наиболее наилучшее" или "наименее наилучшее"

0
Lupus
22 / 22 / 1
Регистрация: 13.03.2011
Сообщений: 326
10.09.2011, 14:38 #40
Цитата Сообщение от talis Посмотреть сообщение
Lupus,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// возвращает первый символ после конца слова
// если до слова встречается \n
// возвращает \n, выставляет первый байт
// buff в 0 (теперь strlen( buff ) == 0 )
char getword( istream &is, char * buff, size_t max )
{
    char ch;
    size_t i = 0;
 
    while( isspace( ch = is.get() ) )
       if( ch == '\n' )
       {
           buff[i] = 0;
           return ch;
       }
 
    do buff[i++] = ch;
    while( !isspace( ch = is.get() ) && i + 1 < max );
 
    buff[i] = 0;
 
    return ch;
}
Добавлено через 33 секунды
вот тест:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int main()
{
    char buff[256];
 
    ifstream fs( "input.txt", ios::in );
 
    if( !fs.is_open() )
       return 1;
 
    do
    {
        char ret = getword( fs, buff, 256 );
 
        if( strlen(buff) == 0 && ret == '\n' )     \\??????????????????
           cout << " [EOL]\n";
        else if( fs.eof() )
           cout << " [EOF]\n";
        else
           cout << buff << ' ';
    }
    while( fs.good() && !fs.eof() );
 
    return 0;
}
Спасибо, только я не понял, зачем длину буфера проверять? Достаточно же было условия по ret?
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.09.2011, 15:11 #41
ret могло быть \n, а буфер заполнен, если сразу после слова стоял \n. вот так:

Код
world\n
Тогда вернулось бы \n, однако буфер был бы заполнен. Если же ситуация такая:

Код
world       \n
то после считывания word вернётся пробел, а следующим вызовом вернётся \n, но буфер будет пустой, так как после world и перед \n слов нет
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2011, 15:11
Привет! Вот еще темы с ответами:

Как правильно сохранить и потом считать структуру в бинарный файл - C++
Есть структура struct card { int size; char *lear; int *name; }; Эта структура это карты игрока. Заполняем ее данными, у...

Есть файл .txt с него нужно считать информацию - C++
Есть файл .txt с него нужно считать информацию и записать в строку у меня считывает только первую строку, и записывает по всем переменным ...

Работа с файлами(открыть файл, считать данные в double массив) - C++
Доброго времени суток всем! Столкнулся с проблемой при написании проги. Вот что требуется: 1)Открыть файл 2)Считать данные в массив...

Считать весь файл в строку - C++
Делаю так: string name_of_file=&quot;abba.txt&quot;; ifstream fin(name_of_file); if(!fin.is_open()){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
41
Yandex
Объявления
10.09.2011, 15:11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru