0

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

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;
};

主文件

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 ABC, 2 ZXC,然后3 QWE它只是打印乱码?

我只想显示有效数据,但 List 的 display() 函数没有参数,那么我应该如何知道哪些数据listLine是有效的?

我只想打印有效行,在上面的示例中,即三行,其他 7 行是废话。

4

1 回答 1

0

嗯,问题有点变了。

但我对下面原始问题的回答足以暗示我认为(对于练习/家庭作业问题)


显然,赋值要求使用以空字符结尾的字符串

也就是说,当您完成这些作业后,使用std::string(或std::wstring) 来存储字符串

于 2013-02-24T01:01:40.800 回答