C ++ Преобразование символа в CString - PullRequest
0 голосов
/ 28 февраля 2020

, прежде чем я просмотрел все похожие темы на каждом форуме, но я не нашел решения, которое работает для меня. Я очень новичок в C ++, поэтому, пожалуйста, не будьте со мной строги.

Моя проблема в том, что я хочу открыть файл и прочитать символы с помощью буферов. А потом я хочу преобразовать их в CString.

CString    buffer;

CString    temp;

...

BYTE buffer[4096] ;

        DWORD dwRead ;

        temp  = _T("");

        do
        {
            dwRead = sourceFile.Read(buffer, 4096) ;

            for (int i = 0; i < 4096; i++)
            {
                temp = temp + ((CString) (char)buffer[i]);
            }
        }

-> Проблема в том, что буфер просто может быть прочитан как символ. Я не знаю, чтобы преобразовать его в CString. Я очень много читал о других решениях для работы со стеками, но не нашел ничего подходящего для меня. Как MultiByteToWideChar или что-то ... Может ли кто-нибудь помочь мне и может сказать мне, где моя вина?

1 Ответ

1 голос
/ 28 февраля 2020

Как, например, объяснено здесь , вы можете преобразовать весь буфер в CString в один go, без внутреннего l oop:

while ((dwRead = sourceFile.Read(buffer, 4096)) > 0) {
    CString block (buffer, dwRead);
    temp += block;
}

The temp = _T(""); не нужно; сконструированный по умолчанию CString (т. е. созданный как CString temp;) автоматически представляет собой пустую строку.

Если вам действительно нужно добавить один символ, вы можете просто сделать temp += someChar;.

...