2016-03-31 10 views
-3

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

#include <chrono> 
#include <ctime> 
#include <fstream> 
#pragma warning(disable:4996) 

void log(const char*& text) 
{ 
    std::fstream fs; 
    fs.open("log.txt", std::fstream::in | std::fstream::out | std::fstream::app); 

    auto now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); 

    fs << ctime(&now) << text << std::endl; 
} 

int main() 
{ 
    const char* log("Testin codenz stuff"); 
} 
+0

Я бы не использовал 'std :: fstream :: in' и' std :: fstream :: app' в то же время. – Logicrat

+0

Не возражаете ли вы разобраться в своей причине? –

+0

@KiloKing Исправление вашей основной ошибки относительно ссылки на указатель [Это работает нормально] (http://coliru.stacked-crooked.com/a/c702c4117bc0943d). –

ответ

1

Эта линия:

const char* log("Testin codenz stuff"); 

является определение локальной переменной с именем log типа const char * со значением "Testin codenz вещи" .. это не вызов функции. Просто сделайте так:

log("Testin codenz stuff"); 
+0

Спасибо, хотя технически строка 'log (« Testin codenz stuff »);' is not правильно, нужно передать аргумент 'const char *'. –

+1

Избавьтесь от '&' в сигнатуре функции. – eduffy