Just off the top of my head, I would guess that you're not reading the input file correctly, and end up reading CR/LF characters. You start by using the stream extraction operator >> to read x and y (which I assume is the dimension of the array). Couldn't you do the same thing to read the maze data. If part of the data consists of spaces, it may be a little trickier, but probably possible if you take a look at the ifstream docs. I suspect you are not getting past the end of lines (which are actually two bytes on windows). Also check for unnecessary whitespace.
Also
when you combine for styles it becomes hard to read please stick to one style or the other. I prefer this one, and I'm sure it's the more common:
Code:
for (int i = 0; i < x; i++)
rather than this one
Code:
for (int i = 0; i <= x+1; i++)
Edit:
Look at your loops, there is inconsistency in the number of times you are looping, and I think only the 2nd loop is correct (loops x times).
Code:
for(int a = 0; a <= y; a++) { // loops y+1 times
for(int b = 0; b < x; b++) { // loops x times
...
for(int a = 0; a <= y; a++) { // loops y+1 times
for(int b = 0; b < x+1; b++) { // loops x+1 times