Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485

Смена типа переменной и удаление ее из файла после чтения

24.05.2018, 18:20. Показов 2826. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить проблему схема такая:

1) Записали число С в файл
2) Открыли этот файл прочитали переменную С и прибавили к ней + 1. То есть A= C+1;
3) Удалили строку из файла с прочитанной переменной.
4) Вывели А на экран

Короче я не знаю как преобразовать С - это по идее стринговая переменная, а надо чтобы она была int хотя бы,
чтобы ее можно было в вычислениях использовать.

Сделал типа меню. необязательно Записывать и читать из файла в одном запуске. Главное преобразовать как то С и удалить данные о ней в файле

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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
 
using namespace std;
int A, B;
string C;
 
/////////////////////////////////////////////////////////////////
 
 
void record()
{
    string text = " NEED RECORD -C- TO FILE";
 
 
    ofstream myfile("1.txt");
 
    if (!myfile)  //если файл неоткрылся
    {
        cout << "Sorry" << endl; system("pause");
    }
    else
        myfile << text << endl;
    myfile.close();
 
    
}
 
 
void read()
{
    string C;
    ifstream creat;
    creat.open("1.txt");
    while (true)
    {
        creat >> C;
        if (!creat.eof())
            cout << C << " ";
        else
            break;
    }
 
    
}
 
 
 
int main()
{
 
    int m = 0;
    cout << " M E N U" << endl;
    cout << "1. Record to file" << endl;
    cout << "2. Read file" << endl;
    cout << "3. A=C+1" << endl;
 
 
    cin >> m;
 
    switch (m)
 
    {
    case 1:
        record();
        break;
 
 
    case 2:
 
        read();
 
        break;
    
    case 3:
 
        read();
        // A = C + 1; ТУТ У МЕНЯ ЗАПАРКА СО СМЕНОЙ ТИПА STRING в ЧИСЛЕННУЮ ПЕРЕМЕННУЮ
 
        break;
        
    }
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2018, 18:20
Ответы с готовыми решениями:

Организация чтения из файла, адрес которой берется из переменной типа String
Доброго всем времени суток. Помогите решить следующую задачу. Организую чтение строк из файла. Адрес файла хранится в БД. Перед чтением...

Недоступны параметры типа QString для собственного класса после чтения из файла
Есть Класс ТFloweres, который представляет собой контейнер для класса ТFlower, который в свою очередь содержит структуру TFlowerRecFile....

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

17
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.05.2018, 18:23
Лучший ответ Сообщение было отмечено mrden777 как решение

Решение

std::stoi
1
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
24.05.2018, 18:44  [ТС]
C++
1
2
3
4
5
6
case 2:
 
        read();
        B = stoi(A);
        std::cout << "std::stoi(\"" << C << "\") is " <<    B << '\n';
        break;
C++
1
2
3
Ошибка    1   error C2665: std::stoi: ни одна из 2 перегрузок не может преобразовать все типы аргументов   c:\111\record_to_file\record_to_file\record_to_file.cpp 81  1   RECORD_to_FILE
    2   IntelliSense: отсутствуют экземпляры перегруженная функция "stoi", соответствующие списку аргументов
            типы аргументов: (int)    c:\111\RECORD_to_FILE\RECORD_to_FILE\RECORD_to_FILE.cpp 81  7   RECORD_to_FILE
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.05.2018, 18:47
У вас A имеет тип int, а std::stoi принимает строку типа std::string.
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
24.05.2018, 18:53  [ТС]
Версия 002



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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
 
using namespace std;
int A, B;
string C;
string text;
/////////////////////////////////////////////////////////////////
 
 
void record()
{
 
 
 
 
    
    cout << "ENTER PLZ TEXT .... = ";
    cin >> text;
    
 
    ofstream myfile("1.txt");
 
    if (!myfile)  //если файл неоткрылся
    {
        cout << "Sorry" << endl; system("pause");
    }
    else
        myfile << text << endl;
    myfile.close();
 
    
}
 
 
void read()
{
    string C;
    ifstream creat;
    creat.open("1.txt");
    while (true)
    {
        creat >> C;
        if (!creat.eof())
            cout << C << " ";
        else
            break;
    }
 
    
}
 
 
 
int main()
{
 
    int m = 0;
    cout << " M E N U" << endl;
    cout << "1. Record to file" << endl;
    cout << "2. Read file" << endl;
    cout << "3. A=C+1" << endl;
 
 
    cin >> m;
 
    switch (m)
 
    {
    case 1:
        record();
        break;
 
 
    case 2:
 
        read();
        B = stoi(text);
        std::cout << "std::stoi(\"" << text << "\") is " << B << '\n';
        A = 1 + B;
        cout << A << "  = THIS A";
        break;
    
    case 3:
 
        read();
        // A = C + 1; ТУТ У МЕНЯ ЗАПАРКА СО СМЕНОЙ ТИПА STRING в ЧИСЛЕННУЮ ПЕРЕМЕННУЮ
 
        break;
        
    }
 
    system("pause");
    return 0;
}
Ошибка
[CPPUnhandled exception at 0x761BC44D in RECORD_to_FILE.exe: Microsoft C++ exception: std::invalid_argument at memory location 0x0043F848.][/CPP]
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.05.2018, 18:56
Цитата Сообщение от mrden777 Посмотреть сообщение
std::invalid_argument at memory location
В дебагере посмотрите что в stoi передаёте (что в text лежит на момент вызова)
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
24.05.2018, 19:11  [ТС]
Ну по идее
C++
1
2
3
4
5
6
7
8
case 2:
 
        read();
        B = stoi(C);
        std::cout << "std::stoi(\"" << C << "\") is " <<    B << '\n';
        A = 1 + B;
        cout << A << "  = THIS A";
        break;
B должно забирать число из стринга С судя по примеру - но не хочет

В файле число лежит, все как надо
Просто преобразовываться из стринга не хочет

Добавлено через 8 минут
УРА ЗАРАБОТАЛА
версия 003

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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
 
using namespace std;
int A, B;
string C;
string text;
/////////////////////////////////////////////////////////////////
 
ifstream creat;
 
void record()
{
 
 
 
 
    
    cout << "ENTER PLZ TEXT .... = ";
    cin >> text;
    
 
    ofstream myfile("1.txt");
 
    if (!myfile)  //если файл неоткрылся
    {
        cout << "Sorry" << endl; system("pause");
    }
    else
        myfile << text << endl;
    myfile.close();
 
    
}
 
 
void read()
{
    
    creat.open("1.txt");
    while (true)
    {
        creat >> C;
        if (!creat.eof())
            cout << C << " ";
        else
            break;
    }
 
    
}
 
 
 
int main()
{
 
    int m = 0;
    cout << " M E N U" << endl;
    cout << "1. Record to file" << endl;
    cout << "2. Read file" << endl;
    cout << "3. A=C+1" << endl;
 
 
    cin >> m;
 
    switch (m)
 
    {
    case 1:
        record();
        break;
 
 
    case 2:
 
        read();
        B = stoi(C);
        std::cout << "std::stoi(\"" << C << "\") is " <<    B << '\n';
        A = 1 + B;
        cout << A << "  = THIS A";
        break;
    
    case 3:
 
        read();
        // A = C + 1; ТУТ У МЕНЯ ЗАПАРКА СО СМЕНОЙ ТИПА STRING в ЧИСЛЕННУЮ ПЕРЕМЕННУЮ
 
        break;
        
    }
 
    system("pause");
    return 0;
}

Надо было сразу из всех функций переменные наверх вытащить
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.05.2018, 19:12
А чем такой вариант не устраивает?)
Формат файла: 2 9 3 1 5 7 9 (числа через пробел)
C++
1
2
3
4
5
6
7
8
9
10
11
void read()
{
    int C;
    ifstream creat("1.txt");
    while(!creat.eof())
    {
        creat >> C;
        C++;
        cout << C << " ";
    }
}
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
24.05.2018, 19:17  [ТС]
SuperKir, у меня проблема была с сохранением переменных из менюшки игры, которая в DLL - при переходе
в основную прогу. Почему то не сохраняет в памяти. Вот приходится изобретать сохранение через файл.
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.05.2018, 19:19
mrden777, Речь идет о считывание чисел с файла, я задал конкретный вопрос, чем не устроил такой вариант?)
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
24.05.2018, 19:22  [ТС]
Да данные только уровень звука сохранить. Других нет настроек И потом я думаю целесообразно разные данные пехать в разные файлы - иначе будет их найти проблематично
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.05.2018, 19:31
mrden777, Как эта информация относится к вопросу, который я задал и вообще к теме?
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
24.05.2018, 19:48  [ТС]
Короче такой способ я больше понял, чем запись в файл не открывая его. Тем более он работает
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.05.2018, 20:05
mrden777, Где он не открывается? Какой способ и причем здесь запись? О ЧЕМ ТЫ?!
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
24.05.2018, 20:55  [ТС]
Короче возникла новая проблема
Я текст загонял как переменную ostringstream
а чтобы ее записать в файл надо string
иметь формат. не знаешь как ее преобразовать ?
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.05.2018, 21:27
mrden777, стандартные типы записываются в файл без всяких приведений к string.
C++
1
2
ofsteam fout(file); //исп. ios_base:: для манипулирования способа открытия, в частности, открыть для записи в конец
fout << x;
x - любой стандартный тип или любой твой с перегрузкой.
1
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
24.05.2018, 22:10  [ТС]
Не понадобилось, но все равно СПС
Короче игра висла из за того что читал данные об уровне звука не с того файла
В принципе music.setVolume(B); если B - int
нормально прокатывает
плохо что в документации SFML не уделяют внимания типам данныз
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
25.05.2018, 10:49
У ostringstream есть метод str() для получения значения буфера в виде std::string.
Но должно записывать и так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2018, 10:49
Помогаю со студенческими работами здесь

Смена типа переменной
Доброго времени суток, форумчане! Имеется проблема: разбираю Oculus SDK а именно приложенные к нему примеры. Забегая наперед скажу, что в...

Смена типа переменной string на int
Нужно сменить тип переменной string на int.

Реализовать «синхронные» методы чтения/записи для переменной типа String в java
Всем Здорова! Тут такая проблемка, нужно реализовать методы чтения/ записи для переменной типа string по следующим правилам: ...

Переменной d присвоить первую цифру после запятой некоторой переменной x типа float
Нужно целой переменной d присвоить первую цыфру после комы некоторой переменной x типа float Скажите, пожалуйста, с чего начать и по...

Смена типа после компиляции
EquippableItem addEquippableItem; itemDatabase.items.Add(addEquippableItem.GetCopy()); добавляется предмет в базу данных, всё ок, тип...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru