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*
для вас, чтобы использовать.