Имеет ли символ перевода строки какое-то особое значение в c ++? Это не-ASCII символ?
Я пытаюсь построить цепочку Маркова для каждой уникальной n-символьной подстроки в большем фрагменте текста. Каждый раз, когда я сталкиваюсь с новой уникальной подстрокой, я вношу ее в карту, значение которой представляет собой вектор из 256 элементов (один элемент для каждого символа в расширенной таблице ASCII).
Нет проблем, когда я распечатываю все содержимое файла ("lines" - это вектор строк текста, построенных с использованием ifstream и getline):
for(int i=0; i<lines.size(); i++) cout << lines[i] << endl;
Весь текстовый файл отображается в консоли. Проблема возникает, когда я пытаюсь вернуть символ новой строки в функцию, которая ожидает символ. «moveSpaces» - это целочисленная константа, которая определяет, сколько символов дальше для перемещения в векторе строк на каждой итерации.
char GetNextChar(int row, int col){
for (int i=0; i<MOVESPACES; i++) {
if (col+1<lines[row].size()) {
col+=1;
} else { // If you're not at the end of the line keep going
row+=1; // Otherwise, move to the beginning of the next row
col=0;
}
}
return lines[row].at(col);
}
Я прошелся с отладчиком, и когда он доходит до 1-го столбца 2-й строки, он обрушивается на меня - без ошибок или чего-то еще. В этой функции происходит сбой, а не в вызывающей функции.
Файл, который я использую - A Christmas Carol (первое, что появилось в Project Gutenberg). Для справки вот первые несколько строчек:
STAVE I: MARLEY'S GHOST
MARLEY was dead: to begin with. There is no doubt
whatever about that. The register of his burial was
Функция обрывается, когда она должна вернуть первый символ во второй строке. Этого не произойдет, если я избавлюсь от новой строки или если я строю вектор «линий» сам построчно в программе. Есть идеи, что случилось?