c++ - 检索字符串的第一个字符并在 C++ 中按字母顺序比较它

标签 c++ string string-literals

我是一名通过教程学习 C++ 的新手程序员,我想知道如何获取一个字符串,获取它的首字母,将其与其他 2 个字符串的首字母进行比较,然后按字母顺序对它们进行排序。我不想为我编写代码。我想了解如何执行此操作,因为其他解决方案很难理解。

我知道字符串只是 char 数组,所以应该有一个方法来获取第一个索引。

更新

所以这是我的尝试:

#include <iostream>
#include <string>
using namespace std;

void valueOutput(string firstName, string secondName, string thirdName){
    cout << "\n";
    cout << firstName << endl;
    cout << secondName << endl;
    cout << thirdName << endl;
}

int main(){
    string name1, name2, name3;

    cout<<"Enter 3 names: "<<endl;

    cin>>name1;
    cin>>name2;
    cin>>name3;

    if(
       (name1[0] < name2[0] && name2[0] < name3[0]) 
    || (name1[0] < name3[0] && name3[0] < name2[0])
    || (name2[0] < name1[0] && name1[0] < name3[0])
    || (name2[0] < name3[0] && name3[0] < name1[0])
    || (name3[0] < name1[0] && name1[0] < name2[0]) 
    || (name3[0] < name2[0] && name2[0] < name1[0]))
    {valueOutput(name1, name2, name3);}
    else{
        return 0;
    }

}

我的输入是: 斯坦贝克 海明威 菲茨杰拉德

但输出的顺序完全相同。我想按字母顺序对它们进行排序。

最佳答案

I know that strings are just arrays of char so there should be a method to get the first index.

看来你的意思是字符串文字。

如果你有三个像这样的声明

char *s1 = "Onur";
char *s2 = "Ozbek";
char *s3 = "Hello";

然后您可以通过以下方式比较字符串文字的第一个字符

if ( s1[0] == s2[0] )

if ( *s2 == *s3 )

如果您声明数组而不是指针,则可以使用相同的表达式

char s1[] = "Onur";
char s2[] = "Ozbek";
char s3[] = "Hello";

事实上你甚至可以使用下面的表达式

if ( "Onur"[0] == "Ozbek"[0] )

if ( *"Onur" == *"Ozbek" )

甚至喜欢

if ( 0["Onur"] == 0["Ozbek"] )

直接比较字符串文字的第一个字符。

关于c++ - 检索字符串的第一个字符并在 C++ 中按字母顺序比较它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49433440/

相关文章:

c++ - 使用私有(private)成员的子类构造函数

c++ - 如何在 Visual Studio Code 中使用 `pkg-config gtkmm-3.0 --cflags --libs`

c++ - 在 C 中导入 BMP 时的环绕问题

c# - 用于实现的常量字符串的最佳实践

python - 为什么我只从列表中得到一个项目

c++ - 获取没有访问器或修改器的嵌套类成员

javascript - 如果 Div 或其子项包含特定的字符串/子字符串?

c++ - 为什么字符串文字是左值而所有其他文字都是右值?

C# 两个双引号

C - 带指针的字符串连接