换行符在 C++ 中是否有某种特殊意义?它是非ASCII字符吗?
我正在尝试为更大的文本中的每个唯一的 n 字符子字符串构建马尔可夫链。每次我遇到一个新的唯一子字符串时,我都会将它输入到一个映射中,该映射的值是一个 256 个元素的向量(扩展 ASCII 表中的每个字符一个元素)。
当我打印出文件的全部内容时没有问题(“行”是使用 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);
}
我已经使用了调试器,当它到达第 2 行的第 1 列时,它对我来说很糟糕——没有错误或任何东西。它在此函数中失败,而不是在调用函数中。
我正在使用的文件是圣诞颂歌(古腾堡计划中出现的第一件事)。作为参考,这里是前几行:
STAVE I: MARLEY'S GHOST
MARLEY was dead: to begin with. There is no doubt
whatever about that. The register of his burial was
该函数在应该返回第二行的第一个字符时中断。如果我去掉换行符,或者我在程序中逐行构建“行”向量,则不会发生这种情况。知道有什么问题吗?