假设我有一个看起来像下面的文件:
|----------------------------------------------|
| |
| |---------| |--------------| |
| |.........| |..............| |
| |.........| |..............| |
| |----+----| |----+---------| |
| # # |
| ################### |
| |
|----------------------------------------------|
(它将是游戏的地图文件)
在这种情况下,MAX_WIDTH
为48,MAX_HEIGHT
为10。
我这样做是为了在阅读时不会跳过空格
infile.unsetf(ios_base::skipws);
然后我get()
在如下循环中使用:
char tile[MAX_HEIGHT][MAX_WIDTH];
char c;
for(int i=0; i<MAX_HEIGHT; i++) {
for(int j=0; j<MAX_WIDTH + 1; j++) {
infile.get(c);
if(c == '\n') {
continue;
}
tile[i][j] = c;
}
}
但是在每一行之后,当我打印数组时,看起来就像是在推行。
|--------------------------------------------|
|
|| |--------| |-------------|
|| |........| |.............|
|| |........| |.............|
|| |----+---| |----+--------|
不确切,但类似这样。
可能出了什么问题,我该怎么办?
(+)打印数组如下:
for(int i=0; y<MAX_HEIGHT; y++) {
for(int j=0; x<MAX_WIDTH; x++) {
cout << tile[y][x];
}
cout << endl;
}
如果输入文件中有Windows样式的换行符,则每个换行符需要读取两个字符。\r\n
。那将解释您的输出损坏。
一种解决方法是使用std::getline
样式函数而不是get
。或明确检查\r\n
组合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句