我有两个msg格式的文件。 msg格式在这里并不重要。
car.msg
int speed;
int width;
cararr.msg
car mycar[];
我想打印有关所有车辆的所有信息,但我不知道现有车辆的数量(阵列有多大),所以我使用以下技术打印信息。
所以我这样做:
cararr* ptr2car;
for(int i=0;mycar[i] != '\0'; i++){
cout << ptr2car->mycar[i].speed <<endl;
cout << ptr2car->mycar[i].width <<endl;
}
尽管如此,我还是收到了错误。我不知道我做错了什么。我不知道应该使用什么方法来获得此输出。请帮忙
另外,为什么我应该指向cararr,当我可以采用cararr inst2car的一个实例并执行类似的操作时:
cararr inst2car;
for(int i=0;mycar[i] != '\0'; i++){
cout << inst2car.mycar[i].speed <<endl;
cout << inst2car.mycar[i].width <<endl;
}
感谢
答案 0 :(得分:1)
通常,您需要准确了解数组末尾的内容。您需要某种sentinel值作为分隔符来指示数组的结尾。
c字符串中使用的'\ 0'就是这种分隔符的一个例子。
您需要确保数组中的最后一个元素是这样的分隔符,并在条件中检查它。
很难用这样的通用问题给你更具体的答案。
例如,如果您知道最后一个元素的速度为-1,则可以使用:
for(int i=0;mycar[i].speed != -1; i++) {