2

「迷路」を表すファイル内の 7x15 のテキスト ブロックを読み取るコードを書いています。

#include <iostream>
#include <fstream>
#include <string>
#include "board.h"  

int main()
{
    char charBoard[7][15];  //the array we will use to scan the maze and modify it
    ifstream loadMaze("maze");  //the fstream we will use to take in a maze
    char temp; //our temperary holder of each char we read in

    for(int i = 0;i < 7; i++)
    {

        for(int j = 0; j < 15; j++)
    {
        temp= loadMaze.get();
        charBoard[i][j] = temp;
        cout << charBoard[i][j];  //testing
    }
    cout << endl;
}

return 0;
}

これは私の最初のドラフトでしたが、戻ってきたのでうまくいきませんでしたか? 読み取った各文字に対して。これは迷路の im テストです:

  ############
              #
############ #
              #
 ######### ####
 # ! #   
############   

編集: cout はこれを印刷しています:

  ############


#
############
 #

  #
 ########
####
 # !      
 #   
########

\n をエスケープしていませんか?

私は数時間コーディングを行ってきたので、今私をつまずかせているのは、私が見つけていない単純な間違いだと思います. ありがとう!

4

4 に答える 4

3

「c:\ MyMazes\maze」のような絶対パスを試してください。

system( "cd")をスローして、現在のディレクトリがどこにあるかを確認します。現在のディレクトリを見つけるのに問題がある場合は、このSOディスカッションをチェックしてください

完全なコードは次のとおりです。これにより、迷路全体(可能な場合)と現在のディレクトリが表示されます。

 char charBoard[7][15];      //the array we will use to scan the maze and modify it
 system("cd");
     ifstream loadMaze("c:\\MyMazes\\maze");  //the fstream we will use to take in a maze

 if(!loadMaze.fail())
 {
    for(int i = 0;i < 7; i++)
    {
        // Display a new line
        cout<<endl;
        for(int j = 0; j < 15; j++)
        {
             //Read the maze character
             loadMaze.get(charBoard[i][j]);
             cout << charBoard[i][j];  //testing
        }
        // Read the newline
        loadMaze.get();
    }
    return 0;
 }
 return 1;
于 2009-10-09T04:30:45.570 に答える
0

ファイルからの抽出が適切かどうかを確認できますか:good()APIを使用してifstream

for(int j = 0; j < 15; j++)
{
    if(!loadMaze.good())
    {
        cout << "path incorrect";

    }

    temp= loadMaze.get();


    cout << "temp = " << temp << endl; //testing
    charBoard[i][j] = temp;
    cout << charBoard[i][j];  //testing
}

また

初めにそれ自体:

ifstream loadMaze("maze"); 
if(!loadMaze.good())
{
  //ERROR
}
于 2009-10-09T04:31:55.480 に答える
0

行を追加してみてください

if (!loadMaze) throw 1;

loadMazeの宣言後、ファイルが存在しない場合、これは例外をスローします。これはハックです。実際には、実際のエラーをスローする必要があります。しかし、それはテストするために機能します。

于 2009-10-09T04:32:12.430 に答える
0

ファイルを開くことができなかったかどうかを確認してください。あなたはそれが良いかどうかをチェックすることによってこれを見つけることができます:

http://www.cplusplus.com/reference/iostream/ios/good/

ファイルを開くことができなかった場合は、ファイルへの絶対パス(C:/ Documents and Settings /.../ maze)を書き込んで、それが機能するかどうかを確認してください。もしそうなら、それは間違っているファイルパスだけであり、あなたはそれで遊ぶ必要があります。

于 2009-10-09T04:32:22.530 に答える