C++ 为什么在词典比较中,“test”排在“paul”之前

C++ 为什么在词典比较中,“test”排在“paul”之前,c++,C++,我正在尝试对字符串数组进行排序。我在做一些测试,我发现了一些我没有预料到的东西。我无法解释 if ("test" < "paul") { cout << "test is less than paul" << endl; } 为什么考试比保罗少?”p'的ASCII值低于't'。在字母表中,它也在p之前。两种情况下的字符串长度也相同 我正在使用swap按字母顺序对数组进行排序。我不能使用排序,我需要使用交换 更新: 在上面的示例中,我使用了指针,但这是我的实际代

我正在尝试对字符串数组进行排序。我在做一些测试,我发现了一些我没有预料到的东西。我无法解释

if ("test" < "paul")
{
  cout << "test is less than paul" << endl;
}
为什么考试比保罗少?”p'的ASCII值低于't'。在字母表中,它也在p之前。两种情况下的字符串长度也相同

我正在使用swap按字母顺序对数组进行排序。我不能使用排序,我需要使用交换

更新: 在上面的示例中,我使用了指针,但这是我的实际代码

DynamicArray<string> sectionName;  //declaration
swap(alreadySeen[i].sectionName[j],alreadySeen[i].sectionName[i]); //usage
这显然不是完整的代码,不想在详细信息中迷失方向

编译时始终启用警告

如果您可以使用,您只需写下:

if(std::string{"test"} < std::string{"paul"}) { /* ... */ }

你在比较指针,而不是字符串,因为这不是一个词典比较。测试在paul之前。。。在记忆中@KIIV在本例中,它是一个指针,但对于字符串也是如此。alreadySeen[i].sectionName[j][0]if(std::strcmp("test", "paul") < 0) { /* ... */ }
if(std::string{"test"} < std::string{"paul"}) { /* ... */ }