首先,這裏是我的代碼http://pastebin.com/BxpE7aFA。將txt文件值存儲到二維數組中
現在。我想讀取一個看起來像這樣的文本文件http://pastebin.com/d3PWqSTV 並將所有這些整數放入一個名爲level的數組中。級別的大小爲100x25,在頂部聲明。
我現在唯一的問題是你在哪裏看到???。如何從文件中獲取字符,並將其放入[i] [j]級別?
首先,這裏是我的代碼http://pastebin.com/BxpE7aFA。將txt文件值存儲到二維數組中
現在。我想讀取一個看起來像這樣的文本文件http://pastebin.com/d3PWqSTV 並將所有這些整數放入一個名爲level的數組中。級別的大小爲100x25,在頂部聲明。
我現在唯一的問題是你在哪裏看到???。如何從文件中獲取字符,並將其放入[i] [j]級別?
檢查一個矩陣的初始化代碼,它應該是int level[HEIGHT][WIDTH];
而不是int level[WIDTH][HEIGHT];
也是,你的數據行比WIDTH
短。代碼的工作方式如下:我們遍歷一個級別矩陣的所有行,通過(file >> row)
指令從文件中讀取一行,如果讀取成功,則我們將行填充到級別矩陣中,否則我們讀取EOF以便從循環中斷開。
#include<iostream>
#include<fstream>
#include<string>
#include <limits>
static const int WIDTH = 100;
static const int HEIGHT = 25;
int main()
{
int level[HEIGHT][WIDTH];
for(int i = 0; i < HEIGHT; i++)
{
for(int j = 0; j < WIDTH; j++)
{
level[i][j] = 0;
}
}
std::ifstream file("Load/Level.txt");
for(int i = 0; i < HEIGHT; i++)
{
std::string row;
if (file >> row) {
for (int j = 0; j != std::min<int>(WIDTH, row.length()) ; ++j)
{
level[i][j] = row[j]-0x30;
}
std::cout << row << std::endl;
} else break;
}
return 0;
}
可以使用file >> level[i][j];
與level.txt
內容來填充您的2D字符數組level[ ][ ]
。
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
static const int WIDTH = 100;
static const int HEIGHT = 25;
char level[HEIGHT][WIDTH]={0};
int main()
{
std::ifstream file;
file.open("level.txt");
if(file.is_open())
{
std::cout << "File Opened successfully!!!. Reading data from file into array" << std::endl;
while(!file.eof())
{
for(int i = 0; i < HEIGHT; i++)
{
for(int j = 0; j < WIDTH; j++)
{
//level[i][j] = ???
file >> level[i][j];
std::cout << level[i][j];
}
std::cout << std::endl;
}
}
}
file.close();
return 0;
}
這工作!另外,你的數據行是什麼意思? –
文件http://pastebin.com/d3PWqSTV中的行少於100 – nikitoz
哦真的沒有注意到!謝謝 –