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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 219, средняя оценка - 4.63
GennDALF
12 / 12 / 0
Регистрация: 24.09.2009
Сообщений: 61
#1

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

05.01.2010, 07:51. Просмотров 34198. Ответов 11
Метки нет (Все метки)

Всем привет!
Подскажите, пожалуйста, как прочитать весь текст из файла в переменную string!
что-то туплю, не могу понять..
спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2010, 07:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из файла в строку (C++):

Чтение сммволов из файла и переход на новую строку - C++
Здравствуйте, уже час ломаю голову и ищу в инете Нужно: считать с файла 12 символов и перейти на новую строку Сделал функцию: ...

Чтение бинарного файла в строку: читается только один байт - C++
Читаю бинарный файл в строку, но почему-то читает только 1 байт. Где здесь может быть ошибка? //ЧТЕНИЕ БИНАРНОГО ФАЙЛА В СТРОКУ FILE *f...

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

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

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip> #include <cstdlib> using namespace std; struct...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

11
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();
}
1
GennDALF
12 / 12 / 0
Регистрация: 24.09.2009
Сообщений: 61
05.01.2010, 09:25  [ТС] #3
так не получается, в том-то и фишка!
так он считывает каждый раз одно слово и переписывает строку в переменной.. и в итоге cout выводит только последнее слово..
надо как-то сделать чтобы новое слово каждый раз ДОписывалось в переменную s, а не заменяло ее значение.
0
Gravity
564 / 558 / 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;
}
2
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
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;
}
3
mirso
525 / 343 / 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;
}//==========================================
5
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
06.01.2010, 10:34 #7
read() лучше.
getline() сканирует строку на предмет поиска разделителя
0
Aliru777
1 / 1 / 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 пустая при выводе?
из файла все выводится в строку,но потом она пустая.не пойму.
1
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;
}
0
jon_illien
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
21.02.2013, 02:12 #10
C++
1
    getline ( inf, sf, '\0' );
[/QUOTE]

не могли бы вы пояснить, принцип работы?
в моей книге: getline(stuff, ' : ') ; // чтение до символа ' : ' , ' : ' отбрасывается
0
alsav22
5426 / 4821 / 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.
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 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>());
}
1
21.02.2013, 03:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2013, 03:04
Привет! Вот еще темы с ответами:

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

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

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

Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; using namespace std; string...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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