簡體   English   中英

如何在Visual C ++中讀取帶有字符(無間距)的txt文件並存儲到15x15的2D字符數組中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM