Окно сообщений C ++ с TCHAR и конкатенацией строк

Может кто-нибудь сказать, пожалуйста, как я могу вывести szFileName в окне сообщения?

Моя попытка ниже не работает

//Retrieve the path to the data.dat in the same dir as our app.dll is located

TCHAR szFileName[MAX_PATH+1];
GetModuleFileName(_Module.m_hInst, szFileName, MAX_PATH+1);
StrCpy(PathFindFileName(szFileName), _T("data.dat"));

FILE *file =fopen(szFileName,"rb");
if (file)
{
fseek( file,iFirstByteToReadPos, SEEK_SET);
fread(bytes,sizeof(unsigned char), iLenCompressedBytes, file);
fclose(file);
}
else
{
MessageBox(NULL, szFileName + " not found", NULL, MB_OK);
DebugBreak();
}

0

Решение

Вы не можете добавить:

szFileName + " not found",

Простое исправление:

MessageBox(NULL, szFileName, L"File not found", MB_OK);
1

Другие решения

C ++ не поддерживает ‘+’ для конкатенации массивов char или TCHAR. Для этого вам нужно использовать строковый класс или сделать это в стиле C с помощью strcat и буфера в стеке.

Поскольку вы используете C ++, вы можете использовать CString, если вы используете ATL / mfc, или вы можете использовать что-то вроде:

typedef std::basic_string<TCHAR> tstring;

...
MessageBox(NULL, tstring(szFileName) + " not found", NULL, MB_OK);

Обычная сантехника C ++ была оставлена ​​читателю в качестве упражнения.

1

По вопросам рекламы [email protected]