Я просто возвращаюсь к программированию на C++, MFC, Unicode. За последние 20 лет менялось множество.Общие сведения о Multibyte/Unicode
Код на другом проекте составлен просто отлично, но были ошибки, когда я вставляю его в свой код. Он взял меня 1-1/2 дней потраченного времени, чтобы решить вызов функции ниже:
enter code here
CString CFileOperation::ChangeFileName(CString sFileName)
{
char drive[MAX_PATH], dir[MAX_PATH], name[MAX_PATH], ext[MAX_PATH];
_splitpath_s(sFileName, drive, dir, name, ext); //error
------- other code
}
После прочтения справки, я изменил CString sFileName использовать бросок:
enter code here
_splitpath_s((LPTCSTR)sFileName, drive, dir, name, ext); //error
Это создало ошибка тоже. Итак, я использовал GetBuffer(), который действительно такой же, как и выше.
enter code here
char* s = sFileName.GetBuffer(300);
_splitpath_s(s, drive, dir, name, ext); //same error for the 3rd time
sFileName.ReleaseBuffer();
В этот момент я был очень расстроен, но в конце концов понял, что мне нужно изменить CString к Ascii (я думаю, потому что я настроен как Unicode).
следовательно;
enter code here
CT2A strAscii(sFileName); //convert CString to ascii, for splitpath()
затем использовать strAscii.m_pz в функции _splitpath_s()
Это, наконец, работал. Итак, после всего этого, чтобы сделать историю короткой, мне нужна помощь сосредоточив внимание на: 1. Unicode против MULIT-Byte (вызовы библиотек) 2. Переменные для использования
Я готов купить еще одну книгу, пожалуйста, ВЫГОДНО , Кроме того, есть ли способ фильтровать мою помощь на VS2015, так что когда я нахожусь на переменной и нажимаю F1, она только дает мне помощь для Unicode и способы конвертировать старый код в Юникод или конвертировать Mylti-Byte в Unicode.
Надеюсь, это не смущает, но у меня есть кое-что догоняющее. Будьте терпеливы, если моя формулировка не идеальна.
Заранее спасибо.
Пожалуйста, перечитайте http: //stackoverflow.com/tour ... Это для конкретных вопросов программирования, и любые рекомендации не соответствуют теме. В качестве побочного примечания: выбор другого языка (например, C#, поскольку вы используете VS уже) или, по крайней мере, более современная библиотека для C++ облегчит поиск помощи ... –
_Lots изменились за последние 20 лет. _ .. yup, более эзотерические способы переполнения буфера :) – txtechhelp
Начать здесь: http://www.unicode.org/standard/principles.html Обратите внимание на «кодовые точки» и способы кодирования UTF-X в многобайтовые. – Ripi2