visual C++ wchar_t* not working

visual C++ wchar_t* not working

本文关键字:not working C++ wchar visual      更新时间:2023-10-16
    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*之外的任何东西,它都不起作用。

它没有按您期望的方式工作,因为您不完全理解c++中的指针和字符串字面值。如果你想知道哪里出了问题,请选择这些书中的任何一本(可能是初学者的)。

如果你想直接解决这个问题(走捷径),使用std::wstring代替:

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

现场演示

根据Rook的建议,如果你必须传递一个指针到C api,你可以使用成员函数std::wstring::c_str,它将返回一个const wchar_t*供你使用。