проблема strftime с разными форматами

string Account::dateCreated(){
    time_t rawtime;
    struct tm * timeinfo;
    char buffer [80];

    time (&rawtime);
    timeinfo = localtime (&rawtime);

        strftime (buffer,80,"%a %b %d %T %Z %Y",timeinfo);
        return buffer;
}

По какой-то причине это ничего не возвращает, но когда я немного меняю это, это работает:

string Account::dateCreated(){
    time_t rawtime;
    struct tm * timeinfo;
    char buffer [80];

    time (&rawtime);
    timeinfo = localtime (&rawtime);

    strftime (buffer,80,"%A %d/%m/%Y",timeinfo);
    return buffer;
}

Вывод раньше был: ничего

Выход сейчас: суббота 13/01/2018


person Neil Shah    schedule 13.01.2018    source источник
comment
Как вернуть локальный массив в C++?   -  person Johnny Mopp    schedule 13.01.2018
comment
С каким компилятором вы работаете?   -  person Jonathan Mee    schedule 13.01.2018
comment
Компилятор MinGW и eclipse ide   -  person Neil Shah    schedule 13.01.2018
comment
@JohnnyMopp Сначала я тоже так подумал, но похоже, что он преобразуется в строку.   -  person Jonathan Mee    schedule 13.01.2018
comment
@JonathanMee Да, это неясно, так как OP имеет типы возврата string и String.   -  person Johnny Mopp    schedule 13.01.2018
comment
это строка.   -  person Neil Shah    schedule 13.01.2018
comment
вот моя ссылка: cplusplus.com/reference/ctime/strftime   -  person Neil Shah    schedule 13.01.2018
comment
@NeilShah Так что это работает для меня на gcc6.3 Можете ли вы сказать мне, какую версию gcc вы используете?   -  person Jonathan Mee    schedule 13.01.2018
comment
Кажется, работает нормально (с std::string) на ideone: ideone.com/3UkJZc   -  person Johnny Mopp    schedule 13.01.2018
comment
как мне это понять   -  person Neil Shah    schedule 13.01.2018
comment
stackoverflow.com/a/18296299/2642059   -  person Jonathan Mee    schedule 13.01.2018
comment
Понятия не имею, но я получил MinGW в декабре 2017 года.   -  person Neil Shah    schedule 13.01.2018
comment
Найдите исполняемый файл gcc и запустите: gcc --version   -  person Jonathan Mee    schedule 13.01.2018
comment
У меня gcc 6.3.0   -  person Neil Shah    schedule 13.01.2018
comment
Если localtime вызывается более чем одним потоком в вашей программе, значение *timeinfo может быть скомпрометировано между вызовом localtime и вызовом strftime.   -  person Howard Hinnant    schedule 13.01.2018
comment
тогда что мне делать   -  person Neil Shah    schedule 14.01.2018
comment
Это зависит от ваших потребностей. Лично я решил больше никогда не использовать C API, написать свой собственный API, а затем попробуйте стандартизировать.   -  person Howard Hinnant    schedule 14.01.2018
comment
Я понял. по какой-то причине %T не работает на моем компьютере.   -  person Neil Shah    schedule 14.01.2018
comment
@NeilShah Хорошее исследование, сэр. Вероятно, было бы полезно ответить на ваш собственный вопрос здесь и принять его на случай, если кто-то еще, работающий с MGWin, столкнется с той же проблемой.   -  person Jonathan Mee    schedule 15.01.2018