C++ wchar_t* не работает

    wchar_t* Pfad;
    wcin >> Pfad;

wchar_t* file = Pfad + "*.quiz";

Не работает для меня, как я могу сделать эту работу? Это говорит "*.quiz" неправильно, что-то вроде этого должно быть числовое значение или что-то в этом роде.

Ну извините, я новичок в C++...

и моя настоящая проблема, я использую это, но я хочу, чтобы пользователь выбрал путь

что-то вроде cin >> file

но я не хочу, чтобы пользователь вводил "*.quiz";

wchar_t* file = L"C:/Users/Niku/Documents/Visual Studio 2012/Projects/Quiz/Quiz/Fragen_Niko/*.quiz"; 
WIN32_FIND_DATA FindFileData;
 HANDLE hFind;
hFind = FindFirstFile(file, &FindFileData); 

if( hFind != INVALID_HANDLE_VALUE ) {
max++;
while ((x = FindNextFile(hFind, &FindFileData)) == TRUE)
max++;
}

Если я использую что-то еще, кроме wchar_t*, это не работает..

1 ответ

Решение

Это не работает так, как вы ожидаете, потому что вы не до конца понимаете указатели и строковые литералы в C++. Если вы хотите узнать, в чем дело, выберите любую из этих книг (возможно, для начинающих).

Если вы хотите решить эту проблему прямо сейчас (используйте ярлык), используйте std::wstring вместо:

std::wstring Pfad;
std::wcin >> Pfad;
auto file = Pfad + L"*.quiz";

Живая демо

Как предполагает Rook, если вам нужно передать указатель на C API, вы можете использовать функцию-член std::wstring::c_str, который вернет const wchar_t* для вас, чтобы использовать.

Другие вопросы по тегам