如何从链表中的字符串中获取第一个字母?

时间:2017-11-06 14:21:09

标签: c++ string pointers character

我试图通过substr(0,1)从名称(类型字符串)中获取第一个字母。但是,我想要一个指向它的指针,在一个链表中。

所以我这样编写:h->name.substr(0,1)其中(h)是指针,(name)是结构中的字符串类型。

struct empType{
    string name;
    empType *next;
};

但是当我打印h->name.substr(0,1)时,它会显示(NULL)。

假设链表存在,(h)是指向第一个节点的指针。

1 个答案:

答案 0 :(得分:2)

要获得(引用a)第一个字符,请使用std::basic_string::front成员函数:

h->name.front();

std::basic_string::at,其值为0

h->name.at(0);

或索引为0的{​​{3}}运算符:

h->name[0];

或取消引用std::basic_string::operator[]指针:

*h->name.data();

或取消引用std::basic_string::data迭代器:

*h->name.begin();

包含结构的简单示例:

#include <iostream>
#include <string>
struct empType{
    std::string name;
    empType *next;
};

int main() {
    empType* h = new empType;
    h->name = "Hello World";
    h->next = nullptr;
    std::cout << h->name.front();
    std::cout << h->name.at(0);
    std::cout << h->name[0];
    std::cout << *h->name.data();
    std::cout << *h->name.begin();
    delete h;
}