Visual Studio — C ++ Help — Использование Ctime в функции для отметки времени переменных

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

Вот мой базовый код в качестве примера:

#include <iostream>
#include <fstream>
#include <string>
#include <ctime>

using namespace std;

//void passwordCheck()
//{
//
//}

string timestamp(string passwordInput1, string passwordInput2, string passwordInput3, string passwordInput4, string passwordInput5, string passwordInput6, string passwordInput7, string passwordInput8, string passwordInput9, string passwordInput10)
{
time_t now = time(0);

char* dt = ctime(&now);

cout << "The local date and time is: " << dt << endl;

tm *gmtm = gmtime_s(&now);
dt = asctime(gmtm);

}

//void saveToFile()
//{
//
//cout << "I've saved 10 passwords for you." << endl;
//}

int main()
{
ofstream outputToFile;
outputToFile.open("manageMyPasswords.txt");

// Look for easier/cleaner way to do this.
string passwordInput1, passwordInput2, passwordInput3, passwordInput4, passwordInput5, passwordInput6, passwordInput7, passwordInput8, passwordInput9, passwordInput10;

// Put into a function then call back here.
cout << "Welcome to Password Manager!" << endl;
cout << "     Enter your first password" << endl;
getline (cin, passwordInput1);
cout << "Enter the next password." << endl;
getline (cin, passwordInput2);
cout << "Enter the next password." << endl;
getline (cin, passwordInput3);
cout << "Enter the next password." << endl;
getline (cin, passwordInput4);
cout << "Enter the next password." << endl;
getline (cin, passwordInput5);
cout << "Enter the next password." << endl;
getline (cin, passwordInput7);
cout << "Enter the next password." << endl;
getline (cin, passwordInput8);
cout << "Enter the next password." << endl;
getline (cin, passwordInput9);
cout << "Enter the next password." << endl;
getline (cin, passwordInput10);//void saveToFile();system("pause");
return 0;
}

-3

Решение

Как я понял ваш вопрос, вам нужно вот что:

#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <map>

int main(int argc, char** argv)
{
typedef std::multimap<time_t, std::string> Passwords;
Passwords passwords;

short counter = 1;

std::cout << "Enter passwords or \"quit\" to stop" << std::endl;
for (std::string line;;)
{
std::cout << "Enter password " << counter << " -> ";
getline(std::cin, line);

if (line.empty())
{
continue;
}
else if (line.compare("quit") == 0)
{
break;
}

passwords.insert(std::pair<time_t, std::string>(time(0), line));

counter++;
}

std::ofstream outputFile;
outputFile.open("manageMyPasswords.txt", std::ios::trunc);

for (Passwords::const_iterator it = passwords.begin(); it != passwords.end(); it++)
{
outputFile << it->first << " " << it->second << "\n";
}

outputFile.close();

return 0;

}

Он будет бесконечно ждать ввода пользователя до тех пор, пока «выход» не будет введен. После этого он будет сбрасывать метки времени с паролем построчно.

Постскриптум Я использовал multimapпотому что вы можете иметь дубликаты меток времени.

Обновить

Судя по вашему коду, вам нужно время, читаемое человеком. Используйте эту функцию для получения текущей даты и времени:

// Returns current date-time formatted like [YYYY-MM-DD][HH:mm:ss]
const std::string GetCurrentDateTime()
{
time_t currentTime = time(0);
struct tm localDateTime;
char buf[80];

localtime_s(&localDateTime, &currentTime);
strftime(buf, sizeof(buf), "[%Y-%m-%d][%X]", &localDateTime);

return buf;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]