Müssen überspringen newline-Zeichen (\n) aus der Eingabedatei
Lese ich in einer Datei in ein array. Es liest jeder char, entsteht das problem, dass es auch liest einen Zeilenumbruch in der text-Datei.
Dies ist ein sudoku-board, hier ist mein code zum Einlesen der Zeichen:
bool loadBoard(Square board[BOARD_SIZE][BOARD_SIZE])
{
ifstream ins;
if(openFile(ins)){
char c;
while(!ins.eof()){
for (int index1 = 0; index1 < BOARD_SIZE; index1++)
for (int index2 = 0; index2 < BOARD_SIZE; index2++){
c=ins.get();
if(isdigit(c)){
board[index1][index2].number=(int)(c-'0');
board[index1][index2].permanent=true;
}
}
}
return true;
}
return false;
}
wie ich schon sagte, liest es die Datei, zeigt auf dem Bildschirm, nur nicht in der richtigen Reihenfolge, wenn es trifft auf die \n
- - Tag der Frage, wie Hausaufgaben, wenn es eine Hausaufgaben-Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut in Ihrem Datei-format können Sie einfach nicht speichern, Zeilenumbrüche, oder fügen Sie ein ins.get() die for-Schleife.
Könnten Sie auch wickeln Sie Ihre c=ins.get() in einer Funktion, die so etwas wie getNextChar (), das überspringen über alle Zeilenumbrüche.
Ich denke, Sie wollen so etwas wie dieses:
Können Sie setzen Sie ins.get() in einer do-while-Schleife:
Haben Sie ein paar gute Möglichkeiten. Entweder nicht speichern Sie den Zeilenumbruch in der Datei explizit verwerfen Sie Sie in den loop, oder verwenden Sie
std::getline()
in<string>
.Beispielsweise mit
getline()
: