我有一个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 ABC
,2 ZXC
和3 QWE
,之后只打印乱码?
我想只显示有效数据,但List的display()函数没有参数,所以我怎么知道listLine
中哪些数据有效?
我只想在上面的例子中打印有效行,即三行,其他7行是无意义的。
答案 0 :(得分:0)
但是我对下面原始问题的回答是我认为的(对于练习/作业问题)
显然,赋值要求使用nullterminated字符串
表示,当您完成这些作业后,请使用std::string
(或std::wstring
)来存储字符串