将链接列表的内容转换为字符串(使用字符串流),但无法了解如何在列表c++中迭代



我目前正在尝试编写一个函数,该函数将使用字符串流将链表中的数据转换为字符串。我不知道该怎么做,但我已经用最少的功能启动了这个功能。我怎样才能更好地编写我的函数来实现这一点?

SList.cpp:

/*
 * SList.cpp
 *
 * written by Carlos D. Escobedo
 * created on 26 Oct
 *
 * References: programmingforums.org (printing linked lists), stackoverflow
 *             (.h file linking issues)
 */
#include "SList.h"

SList::SList() {
    head = NULL;
    size = 0;
}
SList::~SList() {
    SList::clear();
    delete head;
}
void SList::insertHead(int value) {
    if(head == NULL) {
        head = new SLNode(value);
    } else {
        SLNode* temp = new SLNode(value);
        temp->setNextNode(head);
        head = temp;
    }
    size++;
}
void SList::removeHead() {
    if (head != NULL) {
        head = NULL;  
        size--;
    }
}
void SList::clear() {
    head = NULL;
}
unsigned int SList::getSize() const {
    return size;
}
string SList::toString() const {
    stringstream ss;
    if (head != NULL) {
        ss.str("");
    } else {
        int i = 1;
        for (SLNode* n = head; n != NULL; n->getNextNode()) {
            if  (i < (size - 1))
                ss << n->getContents() << ", ";
            ss << n->getContents();
            i++;
        }
    }
    return ss.str();
}

如果这不是家庭作业,您应该删除自制的列表,并使用标准容器,如vector或list。

矢量示例

// vector of string
std::vector<std::string> stringVector;
// add strings
stringVector.push_back("text");
stringVector.push_back("more text");
// iterate all
for (auto& str : stringVector)
{
    // do something with str
    // example:
    std::cout << str;
}

c++中有许多标准容器,例如vector、list、deque、array。每个都有不同的优点和缺点。您需要学习它们来编写c++

相关内容

  • 没有找到相关文章