2015-01-19 7 views
0

Я новичок в C++, и мне нужна помощь в создании функции, которая добавляет затраты в текстовый файл. Это то, что будет внутри текстового файла?C++ код для ввода пользовательского ввода в текстовый файл

Тип расходов: Сумма: Дата

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

Вот код, я использую:

#include <iostream> 
#include <fstream> 

using namespace std; 

void addExpense(char expense, int amount, int date){ 
    cout << "Type of Expense: " << endl; 
    cin >> expense; 
    cout << "Amount: " << endl; 
    cin >> amount; 
    cout << "Date: " << endl; 
    cin >> date; 
} 

int main(int argc, char** argv) { 
    addExpense(); 
    return 0; 
} 
+0

Вы должны предоставить аргументы: голец расходов, сумма ИНТ, дата внутр. – Marcin

ответ

1

Согласно декларации, метод addExpense() принимает 3 аргумента:

void addExpense(char expense, int amount, int date); 

Но во время разговора, вы передаете 0 аргумент:

addExpense(); 

Вместо этого сделайте следующее:

addExpense(expense, amount, date); 

Но, в main(), так как у вас нет каких-либо переменных, сделайте следующее:

void addExpense(char expense, int amount, int date){ 
    //implement the logic to write to file 
} 

int main(int argc, char** argv) { 
    char expense; 
    int amount, date; 
    cout << "Type of Expense: " << endl; 
    cin >> expense; 
    cout << "Amount: " << endl; 
    cin >> amount; 
    cout << "Date: " << endl; 
    cin >> date; 
    addExpense(expense, amount, date); 
    return 0; 
} 
+0

привет, спасибо, у меня есть вопрос, если дата, например, 25Jan, как я должен объявить об этом? и как мне сохранить данные в текстовый файл –

0

Вы должны предоставить аргументы: голец расходов, сумма ИНТ, дата внутр.

Например:

#include <iostream> 
#include <fstream> 

using namespace std; 

void addExpense(char expense, int amount, int date){ 
    cout << "Type of Expense: " << endl; 
    cin >> expense; 
    cout << "Amount: " << endl; 
    cin >> amount; 
    cout << "Date: " << endl; 
    cin >> date; 
} 

int main(int argc, char** argv) { 

    char expense; 
    int amount; 
    int date; 

    addExpense(expense, amount, date); 
    return 0; 
} 
0

Согласно декларации функции, метод addExpense() принимает 3 аргумента:

void addExpense(char expense, int amount, int date);

Но в функции вызова, вы передаете 0 аргумент:

addExpense();

Вместо этого, попробуйте следующее:

char expense = e; int amount = 50, int date = 20150119; addExpense(expense, amount, date);

0

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

Механизм, обычно используемый для взаимодействия с файлами, является файловым потоком (здесь: ofstream = output-filestream). Попробуйте добавить имя файла аргумент в вашу функцию addExpense(), как это (и так как вы читаете переменные из пользовательского ввода внутри функции, я хотел бы также объявить их там и не делает их аргументы):

void addExpense(const std::string& filename); 

и добавить следующий код внутри функции:

void addExpense(const std::string& filename){ 
//local variable declarations (no need to pass them): 
char expense; 
int amount; 
int date; 

//user input 
cout << "Type of Expense: " << endl; 
cin >> expense; 
cout << "Amount: " << endl; 
cin >> amount; 
cout << "Date: " << endl; 
cin >> date; 

//new: append a line to the file 
std::ofstream out(filename, ios::append); 
out << expense << ":" << amount << ":" << date << std::endl; 
out.close(); //important for making sure that everything is actually written to file ("flush" the stream)! 
} 

функция затем вызывается следующим образом:

addExpense("c:/myfile.txt"); 
+0

привет, спасибо, у меня есть вопрос, если дата, например, 25Jan, как я должен объявить об этом? –

+1

Существует несколько соглашений о датах. Один из распространенных вариантов - использовать «миллисекунды с 1 января 1970 года» («мс с эпохи») в формате с 64-разрядным номером (C++: long long), однако это не является действительно удобочитаемым для человека. В противном случае, если вы хотите сохранить его как одну переменную, я бы рекомендовал строку, но тогда вам нужно полагаться на пользователя, вводящего определенный формат (или вы, скорее всего, не сможете автоматически оценить введенные данные, если они «01/01/1985 «один раз против« 1985.31.05 »в следующий раз и т. Д.). Я бы рекомендовал строку и определенный формат, например «yyyy.mm.dd». – Daniel

Смежные вопросы