-1
該程序的功能是。當用戶運行這個時,他們被要求3個輸入。日期(DDMMYY)身體部位受過訓練(例如胸部)和時間(例如100)取決於條件的用戶輸入。用戶可以存儲新的數據。或查看存儲的數據。讀取和寫入CSV文件
當用戶存儲數據時,數據轉到文件的罰款。當他們查看這些數據時,會顯示它們。這是正確的預期功能。
當他們重新啓動程序並輸入另一組信息時,會出現該問題。這組信息覆蓋最後一組信息。因此只顯示最新的數據條目。
1.我該如何做到這一點,當程序重新啓動和新的數據輸入數據附加到該文件,而不是覆蓋它? 2.我的另一個問題是如何在程序的同一運行中重複該功能? 一旦我按ctrl Z到結束文件只是停止 並說按任意鍵繼續輸入...
workoutlogger.cpp
#include "workoutlogger.h"
#include <iostream>
#include <fstream>
#include <string>
#include "mainclient.h"
using namespace std;
workoutlogger::workoutlogger()
{
int choices;
cout << " (1) Do you want to log a new workout\n (2) Track previous workouts?\n Enter the number of your choice\n";
cin >> choices;
switch (choices) {
case 1:
log();
break;
case 2:
viewinfo();
break;
default:
cout << "invalid option..";
workoutlogger();
}
}
workoutlogger::~workoutlogger()
{
}
int workoutlogger::log()
{
ofstream theFile("workinfo.txt");
cout << "enter date (DDMMYY), bodypart trained (eg. Chest), time trained (mins)" << endl;
cout << "press ctrl + z to quit\n";
int date;
string bodypart;
int minutes;
while (cin >> date >> bodypart >> minutes)
{
theFile << date << ' ' << bodypart << ' ' << minutes << endl;
}
system("pause");
return 0;
}
int workoutlogger::viewinfo() {
ifstream theFile("workinfo.txt");
int date;
string bodypart;
int minutes;
while (theFile >> date >> bodypart >> minutes) { //stores infomation in these variables
//file pointer starts at first piece of info, then onto next info to store in variables
cout << date << ", " << bodypart << ", " << minutes << endl;
}
system("pause");
return 0;
}
workoutlogger.h
#pragma once
class workoutlogger
{
public:
workoutlogger();
~workoutlogger();
int viewinfo();
int log();
};
你的文件是由空格,沒有逗號分隔的,你應該檢查文檔的fstream瞭解如何追加到一個文件。如果沒有看到你的'main'函數,或者你調用其他函數,那麼除了猜測你的第二個問題之外,很難做任何事情。簡短的回答,再次調用函數。 –
意識形態觀點:這個類沒有狀態(沒有數據成員)。問問自己,「爲什麼是一堂課?」 – user4581301