计算struct中的数组实例

时间:2013-02-24 00:59:10

标签: c++

我有一个struct数据类型。它包含一个也是结构的数据成员。

struct List{
    private:
        struct Line listLine[MAX_LINES];
    public:
        void set(int no);
        void display() const;
};

listLine属于Line类型,定义为:

struct Line {
    private:
        int num;
        char itemString[MAX_CHARS + 1];
    public:
        bool set(int n, const char* str);
        void display() const;
};

的main.cpp

int main() {

    int no;
    List list;

    cout << "List Processor\n==============" << endl;
    cout << "Enter number of items : ";
    cin >> no;

    list.set(no);
    list.display();
}

线::显示

void Line::display() const {

    cout << this->num << ' ' << this->itemString << endl;

}

list.display(调用line.display,line.display打印一行的一个实例,如果我调用它3次,它将输出3种不同类型的数据,每种数据对应一个listLine的索引)

void List::display() const {

    for (int i = 0; i < 10; i++) {
        this->listLine[i].display();
    }

}

让我们说我填充listLine

listLine[0].num = 1
listLine[0].itemString = ABC
listLine[1].num = 2
listLine[1].itemString = ZXC
listLine[2].num = 3
listLine[2].itemString = QWE

我知道上面没有正确的C ++语法,我只是试图说明这个概念,显示listLine内的数据。

到目前为止,我已经能够打印listLine的内容:

for (int i = 0; i < 10; i++) {
    this->listLine[i].display();
}

以上输出

// reading values in
List Processor
==============
Enter number of items : 3
Enter line number : 1
Enter line string : ABC
Accepted
Enter line number : 2
Enter line string : ZXC
Accepted
Enter line number : 3
Enter line string : QWE
Accepted

// printing those values with the loop i posted
1 ABC
2 ZXC
3 QWE
1 
134514883 
-1217566436 Jm·Z·Èí¬¿-
134515757 
134514257 
134515633 0
-1218833660 ôZ·F·

请注意唯一有效的数据是1 ABC2 ZXC3 QWE,之后只打印乱码?

我想只显示有效数据,但List的display()函数没有参数,所以我怎么知道listLine中哪些数据有效?

我只想在上面的例子中打印有效行,即三行,其他7行是无意义的。

1 个答案:

答案 0 :(得分:0)

嗯,问题有所改变。

但是我对下面原始问题的回答是我认为的(对于练习/作业问题)


显然,赋值要求使用nullterminated字符串

表示,当您完成这些作业后,请使用std::string(或std::wstring)来存储字符串