大家好!
在土耳其语中,其中一个字母具有不同的行为,它是 I -and i-。在英语中,I 和 i 是大写和小写。在土耳其语中,小写的 I 不是 i,而是ı。
所以在土耳其语环境(即Windows)中,“DOMAIN.COM”和“domain.com”是不相等的。由于电子邮件传输和 DNS 完全是英文的,如果邮件地址包含大写的 I,可能会出现问题。
在 C# 中,我们可以使用InvariantCultureIgnoreCase标志来纠正这个问题:
// Mock
string localDomain = "domain.com";
string mailAddress = "USER@DOMAIN.COM";
string domainOfAddress = mailAddress.Split('@')[1];
string localInbox = "";
//
// Local inbox check
//Case insensitive method
bool ignoreCase = true; // Equal to StringComparison.CurrentCultureIgnoreCase
if (System.String.Compare(localDomain, domainOfAddress, ignoreCase) == 0)
{
// This one fails in Turkish environment
localInbox = mailAddress.Split('@')[0];
}
//Culture-safe version
if (System.String.Compare(localDomain, domainOfAddress, StringComparison.InvariantCultureIgnoreCase) == 0)
{
// This one is the correct/universal method
localInbox = mailAddress.Split('@')[0];
}
由于我没有 C++ 经验,这两个示例的C++ 等价物是什么?