換行符在C++中有什麼特別的意義嗎?它是一個非ASCII字符嗎?這個char爲什麼會阻止我的程序?
我正在嘗試爲大塊文本中的每個獨特的n字符子字符串構建一個馬爾可夫鏈。每遇到一個新的唯一子字符串,我將它輸入一個映射,其值是一個256元素的向量(擴展ASCII表中每個字符的一個元素)。
有沒有問題,當我打印出來的文件的全部內容(「線」是用ifstream的和函數getline建行文本的向量):
for(int i=0; i<lines.size(); i++) cout << lines[i] << endl;
整個文本文件中顯示出來安慰。當我嘗試將換行符返回給期望char的函數時,會發生問題。 「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
函數在應該返回第二行的第一個字符時中斷。如果我擺脫換行符,或者如果我在程序中逐行建立「線」向量,則不會發生這種情況。任何想法有什麼不對?
什麼是'moveSpaces'? –
我的調試器從不會對我產生任何影響......你的態度並不好,顯然 –
老實說,我不能對這個問題做出正面或反面的評論。 「失敗」是什麼意思? – MSalters