Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
vitaliy2034
1 / 2 / 4
Регистрация: 14.01.2016
Сообщений: 50
Завершенные тесты: 2
#1

Как указать имя файла в fstream через string и функцию? - C++

14.01.2016, 11:11. Просмотров 432. Ответов 6
Метки нет (Все метки)

Я написал програму которая переводит системы исчесления(2-36).Програма роботает на ура ,но я хотел сделать историю, а поскольку хотелось чтобы имя истории было равносильно текущему времени для этого я написал функцию my_time_for_his (я знаю можно было проще ,но на даный момент итересует пример с функцией) и файл истрии вопще не создаётся. НО компилятор молчит не говорит что есть ошибки.В чём проблема? Помогите!Вот код
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include<iostream>
#include<fstream>
#include<conio.h>
#include<string>
#include<time.h>
using namespace std;
string rax(long long digit,short d_sis );
string my_time_for_his();
string file_name = my_time_for_his() + "d.txt";//здесь в чёмто проблема но в чём
ofstream outt (file_name.c_str());
int main() {
    setlocale(LC_ALL, "Ukrainian");
    cout << file_name.c_str();
    short digit_s[34] = { 0 };
    system("color 2b");
    long long inp;
    outt << "\t\t\t\tПеревод в системи числення(2 - 36)";
    while (true)
    {
        cout << "\t\t\t\tПеревод в системи числення(2-36)\n\n\n\nВведiть число:\n";
        outt << "\n\n\n\nВведiть число:\n";
        for (;;) {
            if (!(cin >> inp)) {
                cout << "Спробуйте ще раз:\n";
                cin.clear();
                while (cin.get() != '\n');
            }
            else
            {
                outt << inp<<endl;
                break;
            }
        }
        for (short i = 2; i <= 36; i++)
        {
 
            outt << "Число " << inp << " в " << i << "-iй системi числення є: " << rax(inp, i) << endl;
            cout << "Число " << inp << " в " << i << "-iй системi числення є: " << rax(inp, i) << endl;
        }
 
        char choice2;
        cout << "Продовжити Так-у або Нi - n\n";
        if ((cin >> choice2) && choice2 == 'y')
        {
            system("cls");
        }
        else
        {
            cout << "Допобачення";
            _getch();
            exit(0);
        }
    }
    _getch();
    return 0;
}
string my_time_for_his(){
    string result;
    unsigned short Ar_date[3] = { 1970,1,1 };
    unsigned long long sekyndu = time(0);
    unsigned short A_time[2] = { 0,0 };
    const unsigned int w_const[3] = { 31536000,31622400,86400 };
    bool prov=false;
    while (true)
    {
        if (Ar_date[0]%4==0)
        {
            sekyndu -= w_const[1];
            Ar_date[0]++;
            if (sekyndu < w_const[1])
            {
                break;
            }
            continue;
        }
        if(Ar_date[0] % 4 != 0)
        {
            sekyndu -= w_const[0];
            Ar_date[0]++;
            if (sekyndu<w_const[0])
            {
                break;
            }
        }
    }
    if (Ar_date[0] % 4 == 0) 
        prov = true;
    unsigned short mount[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    if (prov == true)
        mount[1] = 29;
    for (short i = 0; i < 12; i++)
    {
        
        if (sekyndu >= mount[i] * w_const[2]) {
            sekyndu -= mount[i] * w_const[2];
            Ar_date[1]++;
        }
        else
        {
            while (sekyndu>=w_const[2])
            {
                sekyndu -= w_const[2];
                Ar_date[2]+=1;
            }
 
            break;
        }
    }
    while (sekyndu>=3600)
    {
        sekyndu -= 3600;
        A_time[0]++;
    }
    while (sekyndu>=60)
    {
        sekyndu -= 60;
        A_time[1]++;
    }
    
    result = to_string(Ar_date[2])+"_"+ to_string(Ar_date[1]) + "_"+to_string(Ar_date[0]) + "/"+ to_string(A_time[0]+=2) + ":"+to_string(A_time[1]) + ":"+ to_string(sekyndu) + "|";
    return result;
}
string rax(long long digit,short d_sis) {
    string result2;
    string temp;
    string all_d[37] = { "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    while (digit!=0)
    {
        temp += all_d[digit%d_sis];
        digit -= digit%d_sis;
        digit /= d_sis;
    }
    for (size_t i = 1; i <= temp.length(); i++)
    {
        result2 += temp[temp.length() - i];
    }
    return result2;
}

http://www.cyberforum.ru/cpp-beginners/thread2227797.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2016, 11:11
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как указать имя файла в fstream через string и функцию? (C++):

Получить из файла все цифры, используя функцию fstream
Мужики помогите, препод задал написать прогу и чтобы она брала значения с...

Ошибка в копирование файла через fstream
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace...

Удаление файла *.txt через библиотеку <fstream>
Здравствуйте! Хочу использовать временный файл,для сохранения в нем главной...

Открытие файла через объекта класса fstream
Есть функция: bool Lr::MakeFile() { string name, fullname; cout...

Не создает exe, как запустить через командную строку с указанием имя файла
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;locale&gt;...

6
Apostol584
242 / 148 / 118
Регистрация: 26.11.2012
Сообщений: 375
Завершенные тесты: 2
14.01.2016, 12:26 #2
Лучший ответ Сообщение было отмечено vitaliy2034 как решение

Решение

имя файла не должно содержать \/:*?<>|".
Это для чего?
C++
1
string all_d[37] = { "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
Так по-моему лучше
C++
1
string all_d= "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
1
m1Rr0r
247 / 230 / 45
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
14.01.2016, 12:36 #3
Цитата Сообщение от vitaliy2034 Посмотреть сообщение
ofstream outt (file_name.c_str());
Сделай debug вывод
C++
1
cout << file_name << endl;
Ну и не лишним будет проверять вообще открылся ли файл:
C++
1
2
3
if(!outt.is_open() ) {
// Не открылся файл
}
1
nord_v
329 / 177 / 80
Регистрация: 22.08.2013
Сообщений: 724
14.01.2016, 12:39 #4
Цитата Сообщение от vitaliy2034 Посмотреть сообщение
string file_name = my_time_for_his() + "d.txt";//здесь в чёмто проблема но в чём
В отладчике посмотри, что в file_name получается.
0
Apostol584
242 / 148 / 118
Регистрация: 26.11.2012
Сообщений: 375
Завершенные тесты: 2
14.01.2016, 13:11 #5
C++
1
2
3
4
5
6
7
8
9
10
string my_time_for_his(){
    time_t rawtime;
    struct tm * timeinfo;
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    char* format = "%d_%m_%Y %H-%M-%S ";
    char buffer[80];
    strftime(buffer, 80, format, timeinfo);
    return buffer;
}
1
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,178
Записей в блоге: 1
Завершенные тесты: 2
14.01.2016, 13:45 #6
Если функция my_time_for_his просто возвращает текущее время, то вот так короче.
C++
1
2
3
4
5
6
7
#include <ctime>
...
string my_time_for_his() {
    time_t t;
    time(&t);
    return ctime(&t);
}
1
vitaliy2034
1 / 2 / 4
Регистрация: 14.01.2016
Сообщений: 50
Завершенные тесты: 2
14.01.2016, 14:47  [ТС] #7
Apostol584, спасибо за подказку с файлами.Выручил.
0
14.01.2016, 14:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2016, 14:47
Привет! Вот еще темы с решениями:

Как правильно передать объект fstream в функцию
При использовании следующего подхода возникают вопросы: int myFunc(fstream&amp;...

Как в Visual Studio задать имя файла при запуске Release через Ctrl + F5?
Я переименовал выходной файл в режиме Release в свойствах...

Куда происходит запись файла, если не указать полный путь до него, а только одно его имя?
Доброго всем здравия, душевного и телесного, подскажите пожалуйста где...

fstream, string, random
Вопрос такой, есть структура struct StructEmployee {; int id; ...


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

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

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