我试图通过substr(0,1)
从名称(类型字符串)中获取第一个字母。但是,我想要一个指向它的指针,在一个链表中。
所以我这样编写:h->name.substr(0,1)
其中(h)是指针,(name)是结构中的字符串类型。
struct empType{
string name;
empType *next;
};
但是当我打印h->name.substr(0,1)
时,它会显示(NULL)。
假设链表存在,(h)是指向第一个节点的指针。
答案 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;
}