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

Чтение из файла в строку - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 219, средняя оценка - 4.63
GennDALF
 Аватар для GennDALF
12 / 12 / 0
Регистрация: 24.09.2009
Сообщений: 61
05.01.2010, 07:51     Чтение из файла в строку #1
Всем привет!
Подскажите, пожалуйста, как прочитать весь текст из файла в переменную string!
что-то туплю, не могу понять..
спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2010, 07:51     Чтение из файла в строку
Посмотрите здесь:

C++ Чтение из файла.
C++ как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла?
Чтение из файла. Повторное чтение файла C++
C++ Чтение из файла
Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
05.01.2010, 09:00     Чтение из файла в строку #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
main()
{
ifstream ifs("input.txt");
string s;
while(ifs)
{
          ifs >> s;
}
cout << s;
 
cin.get();
}
GennDALF
 Аватар для GennDALF
12 / 12 / 0
Регистрация: 24.09.2009
Сообщений: 61
05.01.2010, 09:25  [ТС]     Чтение из файла в строку #3
так не получается, в том-то и фишка!
так он считывает каждый раз одно слово и переписывает строку в переменной.. и в итоге cout выводит только последнее слово..
надо как-то сделать чтобы новое слово каждый раз ДОписывалось в переменную s, а не заменяло ее значение.
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
05.01.2010, 13:30     Чтение из файла в строку #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
#include <iostream>
using namespace std;
 
int main()
{   
    string s;
    char temp;
    ifstream ifs("in.txt");
    
    if(!ifs) {
        cerr << "File error." << endl;
        return 1;
    }
    ifs.unsetf(ios::skipws);
    while(ifs >> temp)
        s += temp;
    cout << s << endl;
    return 0;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
05.01.2010, 13:37     Чтение из файла в строку #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Функция read http://cplusplus.com/reference/iostream/istream/read/, пример:
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
25
26
27
28
29
// read a file into memory
#include <iostream>
#include <fstream>
using namespace std;
 
int main () {
  int length;
  char * buffer;
 
  ifstream is;
  is.open ("test.txt", ios::binary );
 
  // get length of file:
  is.seekg (0, ios::end);
  length = is.tellg();
  is.seekg (0, ios::beg);
 
  // allocate memory:
  buffer = new char [length];
 
  // read data as a block:
  is.read (buffer,length);
  is.close();
 
  cout.write (buffer,length);
 
  delete[] buffer;
  return 0;
}
mirso
523 / 341 / 17
Регистрация: 05.04.2009
Сообщений: 709
05.01.2010, 13:42     Чтение из файла в строку #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
GennDALF,
Цитата Сообщение от GennDALF Посмотреть сообщение
прочитать весь текст из файла в переменную string!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
#include <iostream>
 
int main ()//================================
{    
        std::string sf;
        std::ifstream inf;
    
    inf.open ( "Text.txt" );//if (!inf)cerr
    //------------------------- 
    getline ( inf, sf, '\0' );
    //------------------------- 
    inf.close();
    
    std::cout << sf << std::endl;     
 
system( "start www.cyberforum.ru/cpp-beginners/thread82643.html#post458604" );     
system( "pause" );
return EXIT_SUCCESS;
}//==========================================
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
06.01.2010, 10:34     Чтение из файла в строку #7
read() лучше.
getline() сканирует строку на предмет поиска разделителя
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
21.03.2012, 00:19     Чтение из файла в строку #8
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
25
26
27
28
29
30
31
32
// lw4 file work.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>q
#include <string>
#include <cctype>
#include <iostream>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    string s="";
    string s1;
    string s2("1234567890");
    ifstream f_in("d:\\d.txt");
       if (!f_in) cout<<"ERROR!!!";
       while (f_in)
       {
                getline(f_in,s1);
                cout<<s1;
       }
       cout<<"\n";
       cout<<s1;
    getch();
    return 0;
}
Подскажите пожалуйста почему после цикла строке с1 пустая при выводе?
из файла все выводится в строку,но потом она пустая.не пойму.
i_SamSky
 Аватар для i_SamSky
6 / 6 / 0
Регистрация: 13.04.2012
Сообщений: 57
15.04.2012, 10:40     Чтение из файла в строку #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
ifstream TextFile1("TextFile1.txt");             //открываю файл
string s1;
while (!TextFile1.eof())                         //пока не конец файла..
    {
        if (TextFile1.eof()) break;              //если конец закончить считывание
        TextFile >>  s1;                         //или пока не закончится файл,
    }                                            //записывать его содержимое в s1
TextFile1.close();                               //закрываю файл                          
 
        return 0;
}
jon_illien
2 / 2 / 1
Регистрация: 14.08.2012
Сообщений: 78
21.02.2013, 02:12     Чтение из файла в строку #10
C++
1
    getline ( inf, sf, '\0' );
[/QUOTE]

не могли бы вы пояснить, принцип работы?
в моей книге: getline(stuff, ' : ') ; // чтение до символа ' : ' , ' : ' отбрасывается
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.02.2013, 02:46     Чтение из файла в строку #11
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main() 
{
    ifstream in("1.txt");
    
    char ch;
    string str;
    
    while (true)
    {
        in.get(ch);
        if (in.eof()) break;
        str.append(1, ch);
    }
    
    cout << str;
    
    system("pause"); 
    return 0;
}
Добавлено через 11 минут
Цитата Сообщение от Aliru777 Посмотреть сообщение
Подскажите пожалуйста почему после цикла строке с1 пустая при выводе?
из файла все выводится в строку,но потом она пустая.не пойму.
getline() так работает. После считывания (до '\n') и вывода последней строки, getline(), в последней итерации цикла, считывает конец файла. В строку s1 помещается '\0' и устанавливается failbit. Потом происходит проверка условия while() и выход из цикла. Поэтому после выхода из цикла s1 пустая.

Добавлено через 11 минут
Цитата Сообщение от jon_illien Посмотреть сообщение
C++
1
    getline ( inf, sf, '\0' );
не могли бы вы пояснить, принцип работы?
в моей книге: getline(stuff, ' : ') ; // чтение до символа ' : ' , ' : ' отбрасывается
Пояснить это?
C++
1
getline ( inf, sf, '\0' );
istream& getline( istream &is, string str, char delimiter = '\n');
getline() берет из входного потока все символы, включая пробелы, и помещает их в объект типа string, до тех пор пока не встретится символ delimiter, не будет достигнут конец файла или количество полученных символов не станет равным величине, возвращаемой функцией-членом max_size() класса string.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2013, 03:04     Чтение из файла в строку
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
21.02.2013, 03:04     Чтение из файла в строку #12
Можно как-нибудь так:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
#include <string>
#include <iterator>
 
 
int main() {
   std::ifstream ifs("filename");
   std::string string(
        (std::istreambuf_iterator<char>(ifs))
       , std::istreambuf_iterator<char>());
}
Yandex
Объявления
21.02.2013, 03:04     Чтение из файла в строку
Ответ Создать тему
Опции темы

Текущее время: 21:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru