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

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

Войти
Регистрация
Восстановить пароль
 
monnzz
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 34
#1

Записать в вектор строки разной длины из файла - C++

14.02.2013, 17:14. Просмотров 359. Ответов 6
Метки нет (Все метки)

Всем добрый день, ситуация следующая:
не могу записать в вектор строки разной длины из файла
допустим есть файл под названием first.txt в нем содержатся несколько имен
mike
sveta
vasya
dima
aleks

я хочу прочитать эти строки из файла и записать их в вектор под разными индексами, а затем вывести
на экран, вот мой код
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
33
34
35
36
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <conio.h>
 
using std::cout;
using std::ifstream;
using std::ios;
using std::endl;
using std::vector;
using std::ofstream;
 
 int _tmain(int argc, _TCHAR* argv[])
 {
    ifstream iFile ("first.txt", ios::in);
    if (!iFile)
    {
        cout << "file is not opened";
        return 1;
    }
    const int length = 100;
    char string[length];
    vector<char*> v1;
    while(!iFile.eof())
    {
        iFile.getline (string, length, '\n');
        v1.push_back (string);
    }
    iFile.close (); 
    for (size_t j = 0; j < v1.size (); j++)
          сout << v1[j] << endl;
    cout << "finish" << endl; 
    _getch ();
    return 0;
 }
в момент циклического вывода на экран ничего не выводится, а происходят лишь отступы для строк
затем выводится finish и программа завершается
я нашел проблему, как я понял у меня в вектор каждая новая строка записывается сразу по всем прошлым индексам, перекрывая таким образом прошлые записи, но я не могу понять почему так происходит
то есть в предпоследнем проходе в векторе будет хранится
aleks
aleks
aleks
aleks
aleks
буду очень благодарен, если кто подскажет в чем ошибка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2013, 17:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Записать в вектор строки разной длины из файла (C++):

Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки) - C++
#include &lt;iostream&gt; #include &lt;set&gt; #include &lt;iterator&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; int main()...

Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки - C++
ребят всю голову сломал уже завтра уже надо сдавать(( Текстовый файл содержит строки – предложения разной длины. Записать их в...

Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки - C++
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки.

Как из стека записать в вектор неивестной заранее длины? - C++
Пыталась, не получилось. А именно не могу понять, как вынуть из стека хоть что-нибудь и какого типа будет возвращаемое значение, ибо...

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

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

6
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
14.02.2013, 17:24 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 "stdafx.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <conio.h>
 
using namespace std;
 
 int _tmain(int argc, _TCHAR* argv[])
 {
    ifstream iFile ("first.txt", ios::in);
    if (!iFile)
    {
        cout << "file is not opened";
        return 1;
    }
    string temp
    vector<string> v1;
    while(!iFile.eof())
    {
        iFile>>temp;
        v1.push_back (temp);
    }
    iFile.close (); 
    for (size_t j = 0; j < v1.size (); j++)
          сout << v1[j] << endl;
    cout << "finish" << endl; 
    _getch ();
    return 0;
 }
так норм?
1
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
14.02.2013, 17:24 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я не стал разбираться в вашем коде, поэтому написал свой ​​вариант:
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 <string>
#include <fstream>
#include <vector>
 
using namespace std;
 
const int n=10;
 
int main ()
{
    vector<string> vec;
    ifstream inp("first.txt", ios::in);
   string tmp;
   if (!inp)
    {
        cout << "file is not opened";
        system("pause>0");
        return 1;
    }
   while(!inp.eof())
   {
       inp >> tmp;
       vec.push_back(tmp);
   }
   inp.close();
   for(int i=0;i<vec.size();i++)
       cout<<vec[i]<<endl;
    system("pause>0");
    return 0;
}
1
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
14.02.2013, 17:25 #4
хаха я первый однако)))
0
M9ICHIK
63 / 63 / 13
Регистрация: 09.12.2012
Сообщений: 459
14.02.2013, 17:30 #5
monnzz просто в место '\n' в iFile.getline(,,) поставь '\0'
1
monnzz
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 34
14.02.2013, 17:56  [ТС] #6
Мужики, спасибо всем большое, респект за помощь
особое спасибо Мяснику так как помог в моем коде

Добавлено через 19 минут
M9ICHIK, разрешите задать вам вопрос, почему с символом терминатора все работает, а с символом новой строки нет?
Означает ли это, что строки в файле разделены терминатором, а не символом новой строки?
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
14.02.2013, 18:20 #7
iFile.get (string, '\n');

так можно попробовать, get() вместо getline()
0
14.02.2013, 18:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2013, 18:20
Привет! Вот еще темы с ответами:

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

Записать каждые 16 символов из файла в вектор - C++
Как прочитать txt файл и записать каждые 16 символов в вектор? Я сделал вот так: std::vector&lt;char&gt; text_v; char time_text; ...

Как записать все числа из файла в вектор? - C++
Числа хранятся в таком формате, слово Fail потом идет набор чисел и заканчивается двумя пустыми строчками и потом повторяется ниже...

Записать в вектор среднее значение элементов каждой строки матрицы - C++
Дана матрица m x n. Найти и записать в вектор Y среднее значение элементов каждой строки


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

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

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