[英]How to read a txt file with characters (without spacing) and store into a 2D character array with 15x15 in visual c++?
我是C ++編程的新手。.我的命令提示符輸出是我txt文件中包含的大部分字符(重復)。 我創建了一個二維數組映射[15] [15],並嘗試讀取txt文件。 閱讀部分還可以,但是現在我不知道如何將它們放入2D字符數組中。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
char map[15][15];
int alp = 0;
int i = 0;
int main()
{
ifstream in;
//string s;
in.open("city.txt");
if(!in.is_open())
{
cout << "File open error! " << endl;
}
else
{
while(!in.eof())
{
//getline(in, s);
in >> map[i];
i++;
alp++;
//if(in.eof()) break;
cout << map[i] << endl;
}
}
for(i = 0; i <= alp; i++)
{
cout << map[i];
}
in.close();
return 0;
}
eof()僅在第一次失敗的讀取操作之后才返回true。 該操作不會被您的代碼捕獲。 您可以在讀取后直接對eof進行測試,然后在eof()出錯的情況下中斷測試,但這並不完美:
流上的IO操作會將引用返回給定流。 流有有意義的轉換為bool。 True表示讀取成功,例如尚未達到eof,並且讀取目標包含新的正確輸入值。 使用此功能的慣用方式是“ while(in >> map [i])”。
關於算法:您說沒有空格,並且我假設它們都是ascii字符,因此可以歸結為使用兩個for循環對數組的行和列進行雙循環。 在這些循環內將是一行,用get()顯式讀取每個字符,例如
if(!cin.get(map[i][j])) {/* unexpected eof/io error, abort or whatever */ }
由於數據是文本數據,並且分成幾行,因此建議您使用例如std:istream::getline
直接讀入子數組:
for (size_t i = 0; in.getline(map[i], 15); ++i)
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.