【发布时间】:2018-03-15 10:17:36
【问题描述】:
我在 Windows 中工作,使用 vc++2010 和 MFC,使用 Unicode。
以下是我的代码:
CStringW strLowerGreek(L"αβγ");
CStringW strUpperGreek(L"ΑΒΓ");
if (0 == strLowerGreek.CompareNoCase(strUpperGreek))
AfxMessageBox(_T("Two strings are the same"));
else
AfxMessageBox(_T("Two strings are different"));
当我运行代码时,弹出消息是“两个字符串不同”。
我想做的例如是在C盘中创建αβγ.txt,在D盘中创建ΑΒΓ.txt(我不能在同一个磁盘中创建αβγ.txt和ΑΒΓ.txt) ,我认为αβγ.txt和ΑΒΓ.txt具有相同的名称(不是完整路径,只是文件名),然后我想比较两个文件的内容,并检查它们是否相同。所以我需要一个函数来比较两者文件名区分大小写。
我的问题是:
- 根据弹窗提示,
CString成员函数CompareNoCase不支持希腊语小写和大写。那么有什么东西可以在 MFC 或 C++ 中完成工作吗? - 是否有函数或库支持非英语(如希腊语、俄语)的大写和小写比较。我想在比较两个字符串时不区分大小写。
【问题讨论】:
-
实际上,由于 NTFS 区分大小写,您可以在同一目录中创建“αβγ.txt”和“ΑΒΓ.txt”。您必须将
FILE_FLAG_POSIX_SEMANTICS传递给CreateFile 的调用。我不确定,这是一个好主意,或者像 Explorer 这样的文件管理器在遇到名称不同的文件时的行为方式。
标签: c++ string windows mfc compare