首页 > 解决方案 > C ++使用strtok将标记添加到链表

问题描述

我是 C++ 新手,我在这里遇到了很多麻烦。我不想透露我所有的代码,但希望我在这里所拥有的就足够了。

目标是创建一个 char 指针的链接列表,其中每个指针指向一个标记值。到目前为止,我只有第一个令牌被放入链表。例如,如果我输入“cats are cool”,我只会得到“[cats]”作为我的输出。我确定我的 addNew 方法是正确的,所以我认为它与 strtok 有关,但我不确定哪里出了问题。

另一个问题是如何在每个标记周围打印括号?我现在拥有的是在我的整个输出行周围打印花括号。任何帮助将不胜感激 :)

class List{
// Node constructor

public:
void addNew(char *tok){
    Node *newNode = new Node;
    newNode -> data = tok;
    newNode -> next = NULL;
    if(head == NULL) head = newNode;
};

void printTokens(){
    if(head == NULL) std::cout << "Empty";
    Node *tmp;
    tmp = head;
    while(tmp != NULL){
        std::cout << "[" << tmp -> data << "]";
        tmp = tmp -> next;
    } // While loop
};
};

int main(){
    List list;

    // prompt is a char array created from the user's input
    char delim[] = {' ', '|', ';', '&'};
    char *token = strtok(prompt, delim); 

    while(token){
        list->addNew(token);
        token = strtok(NULL, delim);
    }
    list -> printTokens();
}

标签: c++pointerstoken

解决方案


推荐阅读