如何打印一组字符串输出? C ++

时间:2014-10-26 23:23:21

标签: c++ printing cmd linked-list iostream

我很难从2个单独的链表中打印数据。我有正确的宽度和缩进。我无法弄清楚如何让数据每行只打印8个字符串。

我的打印功能

void print(string print_data, int node_no) {
    Node* p = head;
    Node* temp;
    int i;
    int number = node_no;

    if(node_no == 0 || node_no == 1) {
        temp = p;
    }
    else {
        i = 1;
        while(i < node_no) {
            i = i +1;
            temp = p->next;
            p = p->next;
        }
    }
    cout << left;
    for(int i = 0; i < temp->data; ++i) {
        cout << setw(4) << print_data << " ";
    }
}

此外,我不能通过使用模数b / c来设置这一点我一次打印每个列表中的单个节点,因此我在for循环中的i不能用于确定何时结束一行。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,那么在执行print()函数底部的循环时,您不知道已经在给定行上打印了多少个字符串。如果这是问题所在,您需要存储有关已在线路上已有多少字符串的信息。存储此数据的一个位置可以在流iword()

// at an appropriate location, probably at namespace scope outside the function:
static int const iword_index = std::ios_base::xalloc();

// ...
for(int i = 0; i < temp->data; ++i) {
    out << setw(4) << print_data << " ";
    if (++out.iword(iword_index) == 8) {
        out << '\n';
        out.iword(iword_index) = 0;
    }
}

原则上,还可以创建合适的过滤流缓冲器,其保持每行的字数的轨迹。虽然这是一个更通用的解决方案,但它也有点复杂。