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

Конвертация из TCHAR - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
Dma13th
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 10
21.05.2010, 17:38     Конвертация из TCHAR #1
Всем доброго времени суток. Такой вопрос: как конвертировать числовую величину в TCHAR и обратно ??
Если кому-то нужен код, для того чтобы узнать что я хочу конвертировать:

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
 
using namespace std;
 
struct MyFileInfo
{
    TCHAR fname[MAX_PATH];
    SYSTEMTIME sWrite;
};
 
void N_Sort(MyFileInfo* arr, int nCount);
void S_Sort(MyFileInfo* arr, int nCount);
 
int getFileCount(const TCHAR *path);
const TCHAR* g_szFindMask = L"D:\\TEST\\*.*";  /// тут любой свой путь пропишите кому интересно :)
 
 
 
int main()
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    int nCount = getFileCount(g_szFindMask);
    MyFileInfo *aFiles = new MyFileInfo[nCount];
    int i = 0, j = 0;
    SYSTEMTIME tsWrite;
 
    setlocale(LC_ALL,"Russian");
    hFind = FindFirstFile(g_szFindMask, &FindFileData);
    while (FindNextFile(hFind, &FindFileData))
    {
        _tcscpy(aFiles[i].fname, FindFileData.cFileName);
        FileTimeToSystemTime(&FindFileData.ftLastWriteTime,&tsWrite);
        SystemTimeToTzSpecificLocalTime(NULL,&tsWrite,&aFiles[i].sWrite);
        i++;
    }
    FindClose(hFind);
    for (i = 1; i<nCount; i++)
    {
        printf("%S\t\t\t ", aFiles[i].fname);
        printf("%d.%d.%d,%d  ",aFiles[i].sWrite.wHour,aFiles[i].sWrite.wMinute,aFiles[i].sWrite.wSecond,aFiles[i].sWrite.wMilliseconds/100);
        cout << endl;
 
 
    }
 
    cin.get();
 
 
 
    for (i = 1; i<nCount; i++)
    {
        printf("%S\t\t\t ", aFiles[i].fname);
        printf("%d.%d.%d,%d  ",aFiles[i].sWrite.wHour,aFiles[i].sWrite.wMinute,aFiles[i].sWrite.wSecond,aFiles[i].sWrite.wMilliseconds/100);
        cout << endl;
 
 
    }
 
 
 
    cin.get();
    return EXIT_SUCCESS;
}
int getFileCount(const TCHAR *path)
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    int nCount = 0;
 
    hFind = FindFirstFile(path, &FindFileData);
    while (FindNextFile(hFind, &FindFileData))
    {
        ++nCount;
    }
    FindClose(hFind);
    return nCount;
}
Хочу конвертировать дату создания файла WORD в TCHAR и вписать новой имя как имя_файла_дата_создания файла все в одном TCHARe. Не знаю как конвертировать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2010, 17:38     Конвертация из TCHAR
Посмотрите здесь:

C++ Вывод TCHAR в файл
TCHAR Concatenation C++
TCHAR to int C++
Скопировать промежуток в TCHAR C++
getch и TCHAR C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.05.2010, 18:05     Конвертация из TCHAR #2
C++
1
2
3
4
double a;
TCHAR szArr[20];
_sntprintf( szArr, 20, _T("%f"), a ); // в tchar
a = _tstof( _T("234.34") );
Dma13th
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 10
21.05.2010, 21:18  [ТС]     Конвертация из TCHAR #3
C++
1
2
3
4
double a;
TCHAR szArr[20];
_sntprintf( szArr, 20, _T("%f"), a ); // в tchar
a = _tstof( _T("234.34") );
Можно пояснить, что делают эти строки :

C++
1
2
_sntprintf( szArr, 20, _T("%f"), a ); // в tchar
a = _tstof( _T("234.34") );
на счет второй строки, конвертация происходит из tchar в double, а как написать если значения в Tchar уже есть например:

C++
1
2
3
TCHAR szArr[20]; // уже есть значение
// не знаю как выглядит ну представляю так
a = _tstof( _T(szArr) );// но уверен глупость :)
а на счет первой строчки, я как понял _sntprintf(tchar,размер его,_T(тип конвертации в tchar),что конвертируем) если нет можно пояснить, и еще как правильно вывести
без глюков tchar, пишу через cout выдает чушь через принт тоже вообще получается что-то вида 0FA34F или буква, может что-то добавить где-то надо ?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.05.2010, 21:26     Конвертация из TCHAR #4
Цитата Сообщение от Dma13th Посмотреть сообщение
_sntprintf( szArr, 20, _T("%f"), a ); // в tchar
почитайте про работу snprintf - часто используемая и удобная функция
http://www.cplusplus.com/reference/c...stdio/sprintf/

Цитата Сообщение от Dma13th Посмотреть сообщение
a = _tstof( szArr );
_T("dsfsdfj") - макрос, который заставляет компилятор интерпретировать строки как юникодовские, если в системе указан юникод, вообщем читайте рихтера, у него там глава была целая про юникод


Цитата Сообщение от Dma13th Посмотреть сообщение
без глюков tchar, пишу через cout выдает чушь через принт тоже вообще получается что-то вида 0FA34F или буква, может что-то добавить где-то надо ?
есть две разных экземпляра потоков - cout и wcout, для аскии и юникода, попробуйте использовать wcout
Yandex
Объявления
21.05.2010, 21:26     Конвертация из TCHAR
Ответ Создать тему
Опции темы

Текущее время: 04:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru