Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
tomchik
0 / 0 / 0
Регистрация: 04.02.2019
Сообщений: 7
1

Взаимодействие char и TCHAR

06.02.2019, 07:00. Просмотров 1712. Ответов 9
Метки нет (Все метки)

Уважаемые форумчане, имеется следующая, вроде бы, тривиальная проблема:
хочу перезаписать один файл в другой с несколько иным форматом (из txt в bmp) и сделать это циклично. Открываю файл

C++
1
2
3
4
5
6
 char label[] = "file_";
        char FileName[256];
 
    for (int i = 1; i < 1000; i++) {
    sprintf(FileName, "%s%i%s", label, i, ".txt");
    FILE *ptrFile; fopen_s(&ptrFile, FileName, "rb");
Преобразовываю с помощью функций, и для записи хотелось бы сделать что-то следующее:

C++
1
2
3
4
5
6
7
8
9
char cipher[] = "file_";
        char OutputFile[256];
        sprintf(OutputFile, "%s%i%s", cipher, i, ".bmp");
        
        if (SaveArrFile(_T(OutputFile), arr, cw, ch, 24))
            _putts(_T("Excellent"));
        else
            _putts(_T("Error !"));
    }
Но, само собой, компилятор начинает ругаться на аргумент имени файла, т.к. функция SaveArrFile принимает TCHAR:

C++
1
2
BOOL  SaveArrFile(const TCHAR* filename, const __int32* arr,
    int width, int height, int bpp = 24)
Подскажите, как наиболее эффективно и просто с этим побороться?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2019, 07:00
Ответы с готовыми решениями:

Char, TCHAR, wchar_t
Как правильно записать эти 2 участка кода . Ошибки - 1&gt;d:\c++\lab1\lab1\main.cpp(54): error C2664:...

Как перевести TCHAR в CHAR и обратно
Как преобразовать TCHAR в CHAR и обратно? Функцию какую-нибудь подскажите, а то с числами обход...

Путаница с типами данных TCHAR и char. Какой тип данных выбрать?
Я создавал тему в соседнем разделе:http://www.cyberforum.ru/cpp-networks/thread1119035.html...

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор не посылает куда...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что &quot;char *concat(char *,...)&quot;: невозможно...

9
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
06.02.2019, 07:55 2
Цитата Сообщение от tomchik Посмотреть сообщение
Но, само собой, компилятор начинает ругаться на аргумент имени файла, т.к. функция SaveArrFile принимает TCHAR:
Какими словами ругается?
0
tomchik
0 / 0 / 0
Регистрация: 04.02.2019
Сообщений: 7
06.02.2019, 08:05  [ТС] 3
Вроде бы цензурно, но:
С2065 LOutputFile Необъявленный идентификатор.
0
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
06.02.2019, 08:15 4
Цитата Сообщение от tomchik Посмотреть сообщение
С2065 LOutputFile Необъявленный идентификатор.
Не похоже, что причина такой ошибки в char и TCHAR. #include <tchar.h> сделан?

Добавлено через 1 минуту
У меня студия не выдаёт ошибок на выложенный код.

Добавлено через 2 минуты
На какую строку указывает компилятор?
0
06.02.2019, 08:15
tomchik
0 / 0 / 0
Регистрация: 04.02.2019
Сообщений: 7
06.02.2019, 08:23  [ТС] 5
C++
1
2
3
4
5
6
#include "stdafx.h"
#include <string>; 
#include <Windows.h>
#include <tchar.h>
#include <time.h> 
...
Да, конечно подключено.
Выдаёт ошибку на if (SaveArrFile(_T(OutputFile), arr, cw, ch, 24))
Поясню: если я на место OutputFile впишу просто "Image.BMP" - он корректно сформирует изображение, однако в цикле мне нужно склеить название, чтобы он формировал : Image1.bmp, Image2.bmp и т.д.
0
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
06.02.2019, 08:26 6
Студия какая?
0
tomchik
0 / 0 / 0
Регистрация: 04.02.2019
Сообщений: 7
06.02.2019, 08:27  [ТС] 7
VS 2017
0
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
06.02.2019, 08:49 8
Лучший ответ Сообщение было отмечено tomchik как решение

Решение

Цитата Сообщение от tomchik Посмотреть сообщение
_T
Вот эта фигня - это специфика студии, к С++ отношения не имеет. Скорее всего, дело в ней. Такие вопросы лучше выяснять в ветках по студии. У меня 10-я студия, ошибок код не выдаёт.

Добавлено через 3 минуты
Понятно: у меня, в свойствах проекта, набор символов не задан, а у тебя - Юникод прописан.
0
tomchik
0 / 0 / 0
Регистрация: 04.02.2019
Сообщений: 7
06.02.2019, 08:58  [ТС] 9
Действительно, поменял на "Не выбрано" и всё заработало. Большое спасибо!
0
GoshaM
216 / 104 / 36
Регистрация: 02.06.2016
Сообщений: 242
06.02.2019, 10:04 10
Цитата Сообщение от nd2 Посмотреть сообщение
#include <tchar.h> сделан?
Цитата Сообщение от nd2 Посмотреть сообщение
Понятно: у меня, в свойствах проекта, набор символов не задан, а у тебя - Юникод прописан.
В том и смысл типа TCHAR создавать универсальный код, независимый от это настройки.
0
06.02.2019, 10:04
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2019, 10:04

Конвертация из TCHAR
Всем доброго времени суток. Такой вопрос: как конвертировать числовую величину в TCHAR и обратно...

getch и TCHAR
Встала следующая задача : 1) Недопустить ввод кол-ва символов &gt; 10 2) Заменить все символы на *...

TCHAR to int
Помогите, пожалуйста, исправить ошибку в программе. //программа выводит время песни в мс...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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