Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
1

Загрузка чисел в массив из файла

09.09.2014, 10:41. Показов 657. Ответов 7
Метки нет (Все метки)

Есть файл с числами (19 29 0), разделенными пробелами (разного количества). Считывается строка из файла, и в цикле считываются числа из этой строки. Числа заносятся в массив. В итоге в массиве совсем другие числа, но в переменной в которую загружаются числа - правильные.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
getline(infile, sLine); std::istringstream stream (sLine);
 
int indexNumber = 0;
stream >> temp;
 
while (temp != "0") {
 
    if (temp != "0") {
 
        std::cout << temp << "\n";
        timeLine[indexNumber] = temp[indexNumber];
    }
 
    indexNumber++;
    stream >> temp;
}
Вывод temp: 19 20 Вывод массива: 49 48. 0 - указывает на конец строки.

P.S. Скоро крыша поедет с этими массива. Вроде ж элементарная логика, считать число и записать в массив. НО не работает. По началу был динамический массив, не работало, указал явно 2 элемента для эксперимента, тоже не работает.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2014, 10:41
Ответы с готовыми решениями:

Загрузка чисел из файла
Здрасти, как загрузить матрицу из файла? если есть такой txt-файл: 3 3 1 2 3 4 5 6 7 8 9 ...

Загрузка файла в массив
Здравствуйте, помогите, при загрузке из файла в массив - выбивается какой-то мусор... в чем дело?...

Загрузка файла в массив байтов
не подскажите как можно загрузить файл и сохранить его не в файл на пк, а в переменную байтов? т.е...

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив.
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста...

7
Почетный модератор
7385 / 2629 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
09.09.2014, 10:49 2
std::copy и не извращайся. Код не смотрел, ибо на фиг он мне нужен...
1
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
09.09.2014, 10:50  [ТС] 3
Пробелы в числах удалятся автоматически?
0
Эксперт PHP
3011 / 2526 / 1188
Регистрация: 14.05.2014
Сообщений: 7,102
Записей в блоге: 1
09.09.2014, 10:53 4
Цитата Сообщение от iSerg Посмотреть сообщение
timeLine[indexNumber] = temp[indexNumber];
Так temp - это массив или переменная?
0
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
09.09.2014, 10:54  [ТС] 5
Цитата Сообщение от Vourhey Посмотреть сообщение
std::copy и не извращайся.
та же проблема. Вот весь код.
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
37
38
39
40
41
42
int main(int argc, const char * argv[])
{
    int times[3] = {30, 25, 35};
    int timeLine[2] = {};
    
    std::string sLine = "";
    std::string temp = "";
    std::ifstream infile(argv[1]);
    
//    while (temp != "0 0 0")
//    {
        getline(infile, sLine);
        std::istringstream stream (sLine);
        
        int indexNumber = 0;
        stream >> temp;
    
        while (temp != "0") {
            
            
            if (temp != "0") {
                
                std::cout << temp << "\n";
                std::copy(std::begin(sLine), std::end(sLine), timeLine);
//                timeLine[indexNumber] = temp[indexNumber];
            }
            
            indexNumber++;
            stream >> temp;
        }
//    }
    
    std::cout << timeLine[0];
    infile.close();
//    delete timeLine;
    
//    TrafficLight *trafficLight = new TrafficLight();
//    trafficLight->setTimeLights(times, (sizeof(times) / sizeof(int)));
//    delete trafficLight;
 
    return 0;
}
В массиве не те числа, какие-то левые.
0
Эксперт PHP
3011 / 2526 / 1188
Регистрация: 14.05.2014
Сообщений: 7,102
Записей в блоге: 1
09.09.2014, 10:58 6
C++
1
2
3
4
5
6
int temp[3], i = 0;
if (infile)
{
    while (!infile.eof())
        infile >> temp[i++];
}
1
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
09.09.2014, 11:02  [ТС] 7
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Так temp - это массив или переменная?
строковая переменная. если ее описать без индекса (как бы так и должно было быть), то выдает ошибку и не компилируется код.

Добавлено через 3 минуты
Цитата Сообщение от Kerry_Jr Посмотреть сообщение

C++
1
2
3
4
5
int temp[3], i = 0;
if (infile)
{
   while (!infile.eof())
       infile >> temp[i++];
}
работает. (stream >> timeLine[indexNumber++]. Спасибо.
0
Почетный модератор
7385 / 2629 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
09.09.2014, 12:17 8
Цитата Сообщение от iSerg Посмотреть сообщение
та же проблема.
Цитата Сообщение от iSerg Посмотреть сообщение
std::copy(std::begin(sLine), std::end(sLine), timeLine);
Еще б это работало
C++
1
    copy(istream_iterator<int>(numbers_file), istream_iterator<int>(), back_inserter(v));
Все.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2014, 12:17

Загрузка данных из файла в массив целиком, а не по элементам
Доброго времени суток. Такой вопрос: как загрузить данные из файла в массив целиком, за один раз?...

Из файла создать массив, в котором найти разность между суммой четных чисел и произведением нечетных чисел
Создать файл, куда записать n целых чисел. Из файла создать массив, в котором найти разность между...

Загрузка .txt файла в массив С++
Доброго время суток! Помогите кто знает Суть в чем я делаю загрузку так - array&lt;String^&gt;^ strIn =...

Загрузка строк из файла в массив
Помогите загрузить строки из фала в массив. Есть текстовый файл. В нём с каждой новой строки...


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

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

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