Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
noeine
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 45
#1

Как правильно вернуть wchar_t из функции - C++

16.09.2015, 08:17. Просмотров 273. Ответов 8
Метки нет (Все метки)

Я написал функцию, она формирует строку wchar_t вида "16-9-2015-10-12-51.txt" (день-месяц-год-час-минута-секунду.тхт), далее с помщью этой строки, я создавал текстовый файл, в котором в будущем планируется логфайл программы. Я решил вынести код получения времени в отдельную функцию (т.к. время мне так же понадобится как временная метка при записи каждого события в лог. В процессе отделения кода в другую функцию, возникли проблемы с получением значения из этой функции. Подскажите как сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
wchar_t Debug::GetTime_v1() {
    //Изнаем текущее время, позже оно будет подставляться в имя лог файла
    struct tm local_t; //Создаем структуру local_t
    time_t t;// тип time_t - это целое число (означающее количество секунд, прошедших с 1 января 1970 года)
    time(&t); //& - операция взятия адреса. Тут мы берем указатель адреса переменной t
    // * - операция разыменовывания. Возвращает тот объект на который указывает указатель 
    /*!
    int x;
    int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
    int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель
    [url]http://habrahabr.ru/post/251091/[/url]
    !*/
    localtime_s(&local_t, &t);
    dateday = local_t.tm_mday;
    datemon = local_t.tm_mon+1;
    dateyear = local_t.tm_year+1900;
 
    timehour = local_t.tm_hour;
    timemin = local_t.tm_min;
    timesec = local_t.tm_sec;
    //Формируем текстовую строку, чтобы на выходе получить имя текстового файла с временем в названии
    wchar_t testwch[256];
    wchar_t temp[128];
    int test = dateday;
    swprintf_s(testwch, L"%d", test);
        wcscat_s(testwch, L"-");
            wprintf(L"%s\n", testwch);
    test = datemon;
    swprintf_s(temp, L"%d", test);
        wcscat_s(testwch, temp);
        wcscat_s(testwch, L"-");
            wprintf(L"%s\n", testwch);
    test = dateyear;
    swprintf_s(temp, L"%d", test);
        wcscat_s(testwch, temp);
        wcscat_s(testwch, L"-");
            wprintf(L"%s\n", testwch);
    test = timehour;
    swprintf_s(temp, L"%d", test);
        wcscat_s(testwch, temp);
        wcscat_s(testwch, L"-");
            wprintf(L"%s\n", testwch);
    test = timemin;
    swprintf_s(temp, L"%d", test);
        wcscat_s(testwch, temp);
        wcscat_s(testwch, L"-");
            wprintf(L"%s\n", testwch);
    test = timesec;
    swprintf_s(temp, L"%d", test);
        wcscat_s(testwch, temp);
        //wcscat_s(testwch, L"-");
 
    wprintf(L"%s\n", testwch);
    wcscat_s(testwch, L".txt");
    //swprintf_s(testwch, L"%d", L".txt");
    wprintf(L"%s\n", testwch);
    cout << testwch << endl;
 
    return testwch; //Вот тут не получается вернуть полученную строку
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2015, 08:17     Как правильно вернуть wchar_t из функции
Посмотрите здесь:

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

Как правильно вернуть значение? - C++
class Stack { private: myString *st; ... myString getSt() { return st; // не работает }

Как правильно вернуть итератор из метода - C++
Всем привет. Есть класс обертка над контейнером, который рулит некоторыми сущностями И понадобилось получать итераторы на эти сущности -...

Как вернуть вектор из функции? - C++
Как вернуть вектор strx из функции crypto чтоб значения передались pthread_join(thread1,(void**)&amp;str1); ...

Как вернуть string из функции? - C++
Вот вам умные дяди скрин ковырялся я ковырялся так и не понял в чем касяк мб функцию надо по другому записывать или я даже не знаю делал...

Как вернуть из функции два значения - C++
Доброго времени суток! Подскажите, пожалуйста, как вернуть два значения: row и column из функции. Спасибо! void ReadM(long double **mat,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
16.09.2015, 08:26     Как правильно вернуть wchar_t из функции #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
wchar_t* Debug::GetTime_v1() {
...
wchar_t* testwch=new wchar_t[256];
...
}
Только не забудьте удалить строку в вызывающей программе
C++
1
2
3
4
 Debug obj;
wchar_t* res=obj.GetTime_v1();
...
delete[] res;
noeine
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 45
16.09.2015, 08:33  [ТС]     Как правильно вернуть wchar_t из функции #3
+ я там получается каждый раз приращиваю к своей финальной строке, значение сначала дня, потом месяца, ..., потом секунды, может можно сделать это как-то более компактно?

Добавлено через 6 минут
zss, когда я подставил ваш код, функции swprintf_s и wcscat_s начали писать что "отсутствуют экземпляры перегруженная функция "
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
16.09.2015, 08:35     Как правильно вернуть wchar_t из функции #4
Можно одним вызовом
C++
1
swprintf_s(testwch, L"%d/%d/%d\n%d:%d:%d\n", dateday,datemonth,dateyear,timehour,timemin,timesec);
Добавлено через 1 минуту
В объявлении тоже надо поменять тип возвращаемого значения на wchar_t*
Kerry_Jr
Модератор
Эксперт PHP
2178 / 1974 / 689
Регистрация: 14.05.2014
Сообщений: 5,771
Записей в блоге: 1
Завершенные тесты: 5
16.09.2015, 08:37     Как правильно вернуть wchar_t из функции #5
Цитата Сообщение от noeine Посмотреть сообщение
C++
1
cout << testwch << endl;
И прокатывает?
C++
1
wcout << testwch << endl;
noeine
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 45
16.09.2015, 08:39  [ТС]     Как правильно вернуть wchar_t из функции #6
На строку
C++
1
swprintf_s(testwch, L"%d/%d/%d\n%d:%d:%d\n", dateday,datemon,dateyear,timehour,timemin,timesec);
в выходных данных пишет:
error C2664: int swprintf_s(wchar_t *,size_t,const wchar_t *,...): невозможно преобразовать параметр 2 из "const wchar_t [19]" в "size_t"

Добавлено через 1 минуту
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
И прокатывает?
ну я выводил с помощью
C++
1
wprintf(L"%s\n", testwch);
а на cout компилятор просто не жаловался
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
16.09.2015, 08:39     Как правильно вернуть wchar_t из функции #7
C++
1
swprintf_s(testwch, 256,L"%d/%d/%d\n%d:%d:%d\n", dateday,datemon,dateyear,timehour,timemin,timesec);
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
16.09.2015, 08:43     Как правильно вернуть wchar_t из функции #8
Kerry_Jr, Обычно дату задают в виде дд/мм/гггг
а время чч:мм:сс
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2015, 08:44     Как правильно вернуть wchar_t из функции
Еще ссылки по теме:

Как из функции вернуть массив символов? - C++
Здравствуйте.Как возвратить массив символов?Читал другие темы,понял что надо создавать динамическую память,потом удалять её,по другому...

Как вернуть сразу 2 значения из функции? - C++
Есть функция, которая генерирует 2 параметра. Как сделать так, чтобы функция их вернула? Оба сразу?

Как вернуть результат функции по ссылке? - C++
подскажите пожалуйста как вернуть значение &quot;o&quot; через ссылку float v(int&amp; st1_alias,int&amp; storona2,int&amp; ygol) { float o; ...

Как вернуть индексы массива в функции? - C++
Подскажите пожалуйста, как вернуть mi, mj ?(надо вернуть индексы массива) #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;math.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
noeine
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 45
16.09.2015, 08:44  [ТС]     Как правильно вернуть wchar_t из функции #9
Спасибо! Смог получить текущее время из другой функции.
Yandex
Объявления
16.09.2015, 08:44     Как правильно вернуть wchar_t из функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru