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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 71, средняя оценка - 4.82
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
#1

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

10.11.2009, 21:37. Просмотров 11455. Ответов 14
Метки нет (Все метки)

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

Чтение из файла в массив строк - C++
Всем добра! Пишу с таким вопросом: есть файл с текстом, длины строк не известны, надо задать динамический массив string (ну чтобы можно...

Чтение из файла (массив строк) - C++
Здравствуйте, не могли бы вы мне помочь, есть данная задача Реализовать структуру «Ticket» – билет на самолет, содержащую информацию о...

Чтение из файла и запись строк в массив - C++
Здравствуйте! Сейчас пишу свою реализацию алгоритма FIFS и возникла проблема с записью данных из файла в массив. Формат входных данных в...

Чтение строк из файла - C++
Мне нужно читать строки из фалйа разной длинны тоесть может быть вобще пустая строка. нужно именно c++ не c

Чтение строк из файла - C++
Есть файл с 10 строками, необходимо вывести на экран четные строки ifstream file("C:\\1.txt"); for (int i = 0; i < 5; i++) { ...

Чтение строк из файла - C++
Добрый день имеется ряд вопросов касательно чтения строк из текстового файла. В папке с программой содержится файл TEST.TXT, в котором...

14
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
10.11.2009, 21:48 #2
C++
1
2
3
std::ifstream ifs;
std::vector<std::string> v;
white (!ifs.eof()) { std::string s; std::getline(ifs, s); v.push_back(s); }
1
Андрейка
420 / 224 / 27
Регистрация: 25.03.2009
Сообщений: 744
10.11.2009, 21:50 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace std;
int main()
{
    string tmp ; 
    vector < string > a;
    ifstream in("d:\\pr.txt");
    while (in >> tmp)
        a.push_back(tmp);
    copy(a.begin(),a.end(),ostream_iterator<string>(cout," "));
    return 0;
}
1
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
10.11.2009, 21:53  [ТС] #4
Спасибо!
0
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
10.11.2009, 21:54 #5
Простите, а где ссылку на файл задавать?
Епт. Косяк :eek:

правильно так:
std::ifstream ifs("zzz.txt");
1
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
10.11.2009, 22:09  [ТС] #6
Цитата Сообщение от Rififi Посмотреть сообщение
C++
1
2
3
std::ifstream ifs;
std::vector<std::string> v;
white (!ifs.eof()) { std::string s; std::getline(ifs, s); v.push_back(s); }
Бесконечный цикл получается
0
Кирюха
32 / 30 / 2
Регистрация: 10.11.2009
Сообщений: 123
10.11.2009, 22:15 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <vector>
 
using namespace std;
 
int main() {
// записываем содержимое файла с числами в стринг
 FILE * f = fopen("tmp.txt","r");
 vector<char> tmp;
 while(!feof(f))
 {
  tmp.push_back(fgetc(f));
  }

Ребят, все гениальное просто
1
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
10.11.2009, 22:36 #8
попробуй вместо eof fail
0
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
10.11.2009, 22:53  [ТС] #9
Спасибо, но ни один из предложенных вариантов правильно не заработал, отдельно пытаюсь вывести элемент массива в заголовок окна: у Кирюхи, выводит цифры (хотя в файле записаны буквы), Rififi выводит значение true (причём постоянно).
Вообще суть в чём: в Visual C++, нужно считать файл в массив и например какой-либо элемент массива вывести например в заголовок окна.
0
Андрейка
420 / 224 / 27
Регистрация: 25.03.2009
Сообщений: 744
10.11.2009, 22:58 #10
VtaMC, мой вариант компилировал?
0
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
10.11.2009, 23:03  [ТС] #11
Цитата Сообщение от Андрейка Посмотреть сообщение
VtaMC, мой вариант компилировал?
Да, он тоже значение true возвращает у любого элемента массива...
0
easybudda
Модератор
Эксперт CЭксперт С++
9699 / 5649 / 964
Регистрация: 25.07.2009
Сообщений: 10,870
10.11.2009, 23:22 #12
VtaMC, странно... Вот на основе кода Rififi програмка, всё, как надо, работает...
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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int main(){
    vector<string> arr;
    vector<string>::iterator i;
    ifstream ifs;
    string str;
    
    ifs.open("file.txt");
    if ( !ifs.is_open() ) {
        cerr << "Can't open file" << endl;
        return 1;
    }
    
    while ( !ifs.eof() ){
        getline(ifs, str);
        arr.push_back(str);
    }
    
    ifs.close();
    
    for ( i = arr.begin(); i != arr.end(); i++ )
        cout << *i << endl;
        
    return 0;
}
file.txt
Код
string one
string two
string three

Чтение файла в массив строк

Хотя я бы ещё проще сделал:
C++
1
2
    while ( getline(ifs, str) )
        arr.push_back(str);
проверил - работает.
2
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
11.11.2009, 22:08  [ТС] #13
Не, естественно всё работает, но консольно, а как вывести ячейку массива например в Label, в Windows Forms (Visual C++)?
0
easybudda
Модератор
Эксперт CЭксперт С++
9699 / 5649 / 964
Регистрация: 25.07.2009
Сообщений: 10,870
12.11.2009, 03:23 #14
VtaMC, как-нибудь так?
C++
1
2
3
4
...
Label label;
...
label.Text(String(arr[0].c_str()));
А как Вы обычно в Label текст меняете?
0
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
12.11.2009, 11:04  [ТС] #15
Ну вот пытаюсь добавить в listBox:

listBox1->Items->Add(System::Convert::ToString(arr[0].c_str()));

Так он только значение true добавляет, а функция String() выдаёт ошибку приведения типов. И ещё при компиляции с отладчиком он не может считать файл, а если просто открыть скомпилированный файл (без отладчика) файл читается.
0
12.11.2009, 11:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2009, 11:04
Привет! Вот еще темы с ответами:

Чтение строк из файла - C++
struct Questions { char quest; }QuestList; void main() { int numQuest=0; FILE *fp; fp = fopen(&quot;voprosy.txt&quot;,...

Чтение строк из бинарного файла. - C++
Вот как происходит запись строк pr.login и pr.password: FILE *f; f=fopen(path,&quot;ab&quot;); if (f!=NULL) { cout&lt;&lt;&quot;Файл концигурации...

Чтение из файла определеных строк - C++
Здравствуйте. Как реализовать чтение из файла (например: каждой 3 и каждой 7 строки )

Некорректное чтение строк из файла (fscanf) - C++
Доброго времени суток. Студенческая лаба, работа с файлами, CppBuilder6. Запись/чтение только через fprintf/fscanf. Записывает норм,...


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

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

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