I'm noticing that on Windows, file opening is case insensitive.
(ex. fstream("text.txt") will open regardless of the actual filename being: Text.txt)
How would I make this case sensitive instead? (The file not opening unless the filename also matches the proper case)
Under Windows the file system API is generally case-insensitive, so the only way is to check the case of the filename yourself. For example,
bool open_stream_ci(const char* pszName, std::fstream& out)
{
WIN32_FIND_DATAA wfd;
HANDLE hFind = ::FindFirstFileA(pszName, &wfd);
if (hFind != INVALID_HANDLE_VALUE)
{
::FindClose(hFind);
if (!strcmp(wfd.cFileName, ::PathFindFileNameA(pszName)))
{
out.open(pszName);
return true;
}
}
return false;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With