JonathanAVazquez Ответов: 1

Как мы добавляем несколько записей вместе из txt-файла в C++


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

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

Я ввел код. Мой вопрос заключается в следующем: как я могу заставить его добавить второй столбец (стоимость) из каждого ввода, который мы ему даем? Его не зацикливание прямо сейчас, но в идеале я хочу, чтобы каждый раз, когда я вставляю стоимость, в конце концов он добавит все
COST
из всех
accountCost 
вставленный.

Любая помощь приветствуется, даже если вы просто дадите мне ссылку в другом месте,она будет оценена.

ПС. Мой профессор хочет использовать CSTRINGS не c++ строки, следовательно, почему я использую тип char aStringVar[размер] = ""; типичный СТД::строка aStringVar[размер] = "";

Что я уже пробовал:

#include <iostream>
#include <fstream>
#include <cstdlib>

const int SIZE = 256;

int main(void){

ifstream readFile;
ofstream writeFile;
char accountName[SIZE] = "";
char cost[SIZE] = "";
char Total[SIZE] = "";
char Tax[SIZE] = "";
int accountCost = 0;
int accountTotal = 0;
int accountTax = 0;

/*
user inputs all the information into the variables with cout and cin functions.
Not inserting it since its pretty basic and I don't want to spend all my lunch break (work) writing this part of the code.
*/

//This part will simply save the input into the text file according to the format I specified. EX: Jimmy,120,450,2
writeFile.open("bank.txt", ios::app | ios::ate);
writeFile << accountName << "," << Cost << "," << Total << "," << Tax << "\n";
writeFile.close();

//Here we will output
readFile.open("bank.txt");
readFile.getline(accountName, SIZE, ',');
readFile.getline(Cost, SIZE, ',');
readFile.getline(Total, SIZE, ',');
readFile.getline(Tax, SIZE); //didn't use delimeter since its the last one.

accountCost = atoi(Cost);
accountTotal = atoi(Total);
accountTax = atoi(Tax);

cout << "Account Cost: " << accountCost << endl;
cout << "Account Total: " << accountTotal << endl;
cout << "Account Tax: " << accountTax << endl;


}

Richard MacCutchan

Вы не производили никаких вычислений по значениям, введенным пользователем. Вам нужно вернуться к карандашу и бумаге и записать логические шаги задачи. Например, то, что идет первым (создание заголовков файлов базовых структур и т. д.), Далее вам, скорее всего, понадобится цикл, который выполняет ряд шагов (чтение записей учетной записи, вычисление новых итогов, запись обновленной информации). Наконец, вам нужно закрыть все файлы и привести в порядок любой вывод отчета и т. д.

1 Ответов

Рейтинг:
11

KarstenK

Использование обычно

std::string aStringVar = "happy coding";//one string
std::string aStringVar1[SIZE] = "";// an array
aStringVar1[0] = "hello world";//access the first string

Вы можете писать в открытый файл до тех пор, пока он не будет закрыт. Расширение вашего кода
writeFile.open("bank.txt", ios::app | ios::ate);
writeFile << accountName << "," << Cost << "," << Total << "," << Tax << "\n";
writeFile << "Further writing in file";
writeFile.close();


Подумайте хорошенько, что и как вы пишете в файле, потому что какой-нибудь код или человек прочтет его. Тестирование очень важно!!!

Поскольку у вас есть некоторые недостающие знания о std::string, прочтите это руководство.


JonathanAVazquez

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

Думаю, я понял, что мне нужно. Поэтому я решил включить еще один массив, который будет собирать значение 1 из этих переменных. Каждое число, которое вводит пользователь, помещает его в массив. В конце я буду использовать цикл for, чтобы перебирать массив, и каждый цикл он будет добавлять сам, в конце концов это будет общее значение. Я не включаю код, так как я все еще работаю над этой частью. Как только я это выясню, я включу его сюда. Все еще на стадии тестирования.