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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
vladislav5
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 48
#1

Ошибка в строке file.write - C++

23.06.2011, 19:08. Просмотров 1737. Ответов 21
Метки нет (Все метки)

Помогите разобраться с записью file.write (49строчка) в чем ошибка???
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <locale>
#include <iterator>
#include <conio.h>
#include <string>
#include <vector>
#include <algorithm>
#include <time.h>
 
using namespace std;
 
#define M 3
#define L 2
#define K 3
#define MAX_VALUE 100
 
typedef vector<vector<double> > matrix_2;
typedef matrix_2::iterator m2Iter;
typedef vector<matrix_2> matrix_3;
typedef matrix_3::iterator m3Iter;
 
int main()
{
    srand(static_cast<unsigned>(time(NULL)));
    setlocale(LC_ALL, "Russian");
 
    cout << "Введите имя создаваемого файла" << endl;
    string fileName;
    cin >> fileName;
 
    {
        ofstream file(fileName.c_str(), ios::trunc | ios::binary);
        if (file.fail())
        {
            cout << "Невозможно создать файл " << fileName << endl;
            _getch();
            return EXIT_FAILURE;
        }
 
        matrix_3 v(M, matrix_2(L, vector<double>(K)));
 
        // сгенерируем созданную матрицу  и сразу выводим ее в файл;
        for (m3Iter i = v.begin(), end = v.end(); i != end; ++i)
        {
            for (m2Iter j = i->begin(), end = i->end(); j != end; ++j)
                for (vector<double>::iterator k = j->begin(), end = j->end(); k != end; ++k)
                    file.write(*k = rand() % MAX_VALUE)<<" ";
            
            file << endl;
        }
        file.close();
    }
    
    cout << "Файл " << fileName << "создан " << endl << endl;
 
    // создание литерного файла основе предыдущего;
    {
        ifstream ifile(fileName.c_str(), ios::binary);
 
        cout << "Введите имя второго файла" << endl;
        cin >> fileName;
        ofstream ofile(fileName.c_str(), ios::trunc);
 
        if (ofile.fail())
        {
            cout << "Не удалось создать файл " << fileName << endl;
            _getch();
            return EXIT_FAILURE;
        }
 
        matrix_3 v(M, matrix_2(L, vector<double>(K)));
 
        for (m3Iter i = v.begin(), end = v.end(); i != end; ++i)
            for (m2Iter j = i->begin(), end = i->end(); j != end; ++j)
                for (vector<double>::iterator k = j->begin(), end = j->end(); k != end; ++k)
                    ifile >> *k;
        ifile.close();
 
        for (m3Iter i = v.begin(), end = v.end(); i != end; ++i)
        {
            vector<double> tmp(L);
            for (size_t k = 0; k < K; ++k)
            {
                vector<double> tmp(L);
                for (size_t j = 0; j < L; ++j)
                {
                    tmp[j] = i->operator[](j)[k];
                    ofile << i->operator[](j)[k] << " ";
                }
                
                ofile << " ";
            }
            ofile << endl;
        }
        ofile.close();
        cout << "Файл " << fileName << " создан" << endl;
    }
 
    _getch();
    return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2011, 19:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в строке file.write (C++):

Read and write binary file - C++
Ребята, срочно нужна помощь. Записываю класс Message с сообщениями в файл. struct Head { public: int who; int to; ...

Ошибка при "сборке" Cannot open include file: 'stdafx.h': No such file or directory - C++
Я полный ноль в C++=( Вот код:#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; #define MAXINJECTSIZE 4096 ...

Maya APi, ошибка "Cannot open include file. No such file or directory" - C++
Помогите плз кто знает искал не нашол решения. f:\project\test\basicswshader1\basicswshader.h(20) : fatal error C1083: Cannot open...

Ошибка при использовании write() - C++
Ребят есть код, запись информации в файл. #include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;locale.h&gt; ...

Ошибка stdafx.h: No such file or directory - C++
при запуске программы выдает такую ошибку : fatal error C1083: Не удается открыть файл включение: stdafx.h: No such file or directory ...

Ошибка 'file' was not declared in this scope - C++
Здравствуйте! Помогите кто чем может) в общем она перезаписывает сначала данные 1.txt в 3.txt, а затем 2.txt в 3.txt а надо чтобы...

21
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
25.06.2011, 21:55 #16
Не знаю. У меня все записываются, вроде. правда слипаясь по 2.
0
vladislav5
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 48
25.06.2011, 22:06  [ТС] #17
да у меня тоже слипается...но числа только в первой строчке
0
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
25.06.2011, 22:15 #18
Значит неправильно считываешь
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <locale>
#include <iterator>
#include <conio.h>
#include <string>
#include <vector>
#include <algorithm>
#include <time.h>
 
using namespace std;
 
// объвление констант;
#define M 3
#define L 2
#define K 3
#define MAX_VALUE 100
 
// переопределение типов;
typedef vector<vector<double> > matrix_2;
typedef matrix_2::iterator m2Iter;
typedef vector<matrix_2> matrix_3;
typedef matrix_3::iterator m3Iter;
 
int main()
{
        // делаем рандом зависимым от времени;
        srand(static_cast<unsigned>(time(NULL)));
        // выставляем вывод русского текста в консоли;
        setlocale(LC_ALL, "Russian");
 
        // запрашиваем у пользователя имя создаваемого файла;
        cout << "Введите имя создаваемого файла" << endl;
        string fileName;
        cin >> fileName;
 
        // первая часть задания - создание бинарного файла с 3х-мерной матрицей;
        {
                // создание файла для записи в бинарном режиме;
                ofstream file(fileName.c_str(), ios::trunc | ios::binary);
                // если почемк-то не удалось создать файл, то оповещаем пользователя и выходим из приложения;
                if (file.fail())
                {
                        cout << "Невозможно создать файл " << fileName << endl;
                        _getch();
                        return EXIT_FAILURE;
                }
 
                // создание трехмерной матрицы;
                matrix_3 v(M, matrix_2(L, vector<double>(K)));
 
                // сгенерируем созданную матрицу  и сразу выводим ее в файл;
                for (m3Iter i = v.begin(), end = v.end(); i != end; ++i)
                {
                        for (m2Iter j = i->begin(), end = i->end(); j != end; ++j)
                        {
                                for (vector<double>::iterator k = j->begin(), end = j->end(); k != end; ++k)
                                {
                                        *k = rand() % MAX_VALUE;
                                        cout << *k << endl;
                                }
                                // вывод целого вектора (внутреннее измерение) за раз.
                                file.write((char*)&(*j)[0], j->size()*sizeof((*j)[0]));
                        }
                }
                // закрываем файл;
                file.close();
        }
        
        // оповещение пользователя о том, что требуемый файл создан;
        cout << "Файл " << fileName << "создан " << endl << endl;
 
        // вторая часть задания - создание литерного файла основе предыдущего;
        {
                // открываем первый файл на чтение;
                ifstream ifile(fileName.c_str(), ios::binary);
 
                // запрашиваем имя второго файла;
                cout << "Введите имя второго файла" << endl;
                cin >> fileName;
                ofstream ofile(fileName.c_str(), ios::trunc);
 
                // если не получилось создать файл, то оповещаем пользователя и выходим из приложения;
                if (ofile.fail())
                {
                        cout << "Не удалось создать файл " << fileName << endl;
                        _getch();
                        return EXIT_FAILURE;
                }
 
                // создадим 3х-мерную матрицу для считывания данных;
                matrix_3 v(M, matrix_2(L, vector<double>(K)));
 
                // считаем исходные данные в созданную матрицу;
                for (m3Iter i = v.begin(), end = v.end(); i != end; ++i)
                        for (m2Iter j = i->begin(), end = i->end(); j != end; ++j)
                                ifile.read((char*)&(*j)[0], j->size()*sizeof((*j)[0]));               
                // закрываем файл;
                ifile.close();
 
                // заполним второй файл (каждая запись - столбец двумерной матрицы);
                for (m3Iter i = v.begin(), end = v.end(); i != end; ++i)
                {
                        vector<double> tmp(L);
                        for (size_t k = 0; k < K; ++k)
                        {
                                vector<double> tmp(L);
                                for (size_t j = 0; j < L; ++j)
                                        tmp[j] = i->operator[](j)[k];
                                copy(tmp.begin(), tmp.end(), ostream_iterator<double>(ofile));
                                ofile << " ";
                        }
                        ofile << endl;
                }
                // закрываем файл;
                ofile.close();
                // оповезщение пользователя о создании нового файла;
                cout << "Файл " << fileName << " создан" << endl;
        }
 
        _getch();
        return EXIT_SUCCESS;
}
0
vladislav5
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 48
25.06.2011, 22:41  [ТС] #19
ох здорово,остается только разделить по два во втором файле)))
0
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
25.06.2011, 22:55 #20
Ну вот, в строке 111 можно разделитель указать. Пробел, например.
C++
1
ostream_iterator<double>(ofile," ")
0
vladislav5
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 48
25.06.2011, 23:05  [ТС] #21
grizlik78
спасибо тебе!!!слушай,а что значит цифры которые выводятся в консоле,когда создаешь первый файл?
0
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
25.06.2011, 23:08 #22
Это содержимой матрицы, для проверки выводил. Забыл убрать
Это строка 61. Можно убрать.
0
25.06.2011, 23:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2011, 23:08
Привет! Вот еще темы с ответами:

Ошибка Cannot open file: ./sysdeps/x86_64/strlen.S - C++
#include &lt;cstring&gt; #include &lt;cstdlib&gt; #include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; ...

Ошибка no such file of directory при подключении iostream - C++
Компилятор не признаёт библиотеку iostream Как исправить?

Пишет graphics.h no such file of directory. В чем ошибка? - C++
Пробовал прописать без &quot;.h&quot;. Все равно не работает. Найти график функции и найти точки пересечения. y=x^3-1, y=3x-3 #include...

Где ошибка: ClearBuffer(Buffer,sizeof(Buffer)); WRITE(Buffer,test,20,ALL); - C++
Cho ne pravilno v sledyushem code: #define ALL; ........ ClearBuffer(Buffer,sizeof(Buffer)); WRITE(Buffer,test,20,ALL); ...


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

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

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