-1

なぜかこのコード

for (i = 0; i < 1024; i++)
    mem[i] = 0;

  //Read input file
  instructions.open (fname.c_str(), fstream::in);
  if (!instructions.is_open() ) {
    std::cout << "Error 404: file not found\n";
    exit (404);
  }

for (i = initial_pos; !instructions.eof(); i++) 
  instructions >> mem[i];

このファイルを読んでいます

1
21
1
9
11
9
16
11
9
3
60
2
0
21
0
1
11
4
0
2
2
90
0

そのような:

1
33
1
32
11
0
28
11
1
26
11
2
24
11
3
22
41
1
1
51
8
22
1
3
21
2
0
60
34
12
5
2
2
3
90
0
0
0
1
0

>>オペランドがmemに乱数を追加しているように見える特定の理由はありますか? mem は初期化された配列であり、すべての数値は読み取られた後に出力されることに注意してください。

4

2 に答える 2

2

これを 100 回書くリスクがあるので、コード次のようになります。

std::ifstream infile(fname.c_str());   // "in" is implied

if (!infile) { /* error, could not open file */ }

for (int n; infile >> n; )
{
    // we read the number n
}

整数のコンテナだけが必要な場合は、さらに良い:

#include <vector>
#include <iterator>
#include <fstream>

std::ifstream infile(fname.c_str());
std::istream_iterator<int> beg(infile), end();

std::vector<int> v(beg, end);

// now "v" contains all the integers.
于 2013-01-14T23:38:13.127 に答える
0

修正しました。実行可能ファイルを間違って呼び出していました。

そのはず:

[ [ [ [入力名]]]]

しかし、私はそれを次のように呼んでいました:

sim test1.bin

そのため、シミュレーターは初期PCを「test1.bin」に設定し、入力をデフォルト入力「input.bin」に設定していたため、間違ったファイルを読み取っていました。

私はそれがいつもくだらない宿題の発表に帰着すると思います.

于 2013-01-15T03:05:50.333 に答える