Преобразуйте CString в символ константы*

Вы устанавливаете слушателя, а затем немедленно возвращаетесь, прежде чем будут получены какие-либо результаты - поэтому ваш возврат всегда пуст. Тело findAllFolders() должно ждать ответа, прежде чем вернуться. Попробуйте следующее, чтобы заменить _root.list().listen():

  List<FileSystemEntity> files = await _root.list(recursive: true, followLinks: false).toList();

  for (FileSystemEntity entity in files) {
    // Do your filename logic and populate _dirs
49
задан Mateen Ulhaq 14 May 2011 в 20:45
поделиться

4 ответа

Чтобы преобразовать строку TCHAR CString в ASCII, используйте макрос CT2A - это также позволит вам преобразовать строку в UTF8 (или любой другой Кодовая страница Windows):

// Convert using the local code page
CString str(_T("Hello, world!"));
CT2A ascii(str);
TRACE(_T("ASCII: %S\n"), ascii.m_psz);

// Convert to UTF8
CString str(_T("Some Unicode goodness"));
CT2A ascii(str, CP_UTF8);
TRACE(_T("UTF8: %S\n"), ascii.m_psz);

// Convert to Thai code page
CString str(_T("Some Thai text"));
CT2A ascii(str, 874);
TRACE(_T("Thai: %S\n"), ascii.m_psz);

Существует также макрос для преобразования из ASCII -> Unicode ( CA2T ), и вы можете использовать его в приложениях ATL / WTL, если у вас есть VS2003 или выше.

Дополнительную информацию см. В MSDN .

65
ответ дан 7 November 2019 в 11:34
поделиться

Если ваш CString - Unicode, вам нужно выполнить преобразование в многобайтовые символы. К счастью, есть версия CString, которая сделает это автоматически.

CString unicodestr = _T("Testing");
CStringA charstr(unicodestr);
DoMyStuff((const char *) charstr);
20
ответ дан 7 November 2019 в 11:34
поделиться

Есть явное приведите CString к LPCTSTR, чтобы вы могли сделать это (при условии, что не указан юникод):

CString str;
// ....
const char* cstr = (LPCTSTR)str;
4
ответ дан 7 November 2019 в 11:34
поделиться

Примечание: этот ответ предшествует требованию Unicode; см. комментарии.

Просто приведите его:

CString s;
const TCHAR* x = (LPCTSTR) s;

Это работает, потому что CString имеет оператор приведения, который делает именно это.

Использование TCHAR делает ваш код независимым от Unicode; если вас не волнует Unicode, вы можете просто использовать char вместо TCHAR .

15
ответ дан 7 November 2019 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: