개행 문자는 C++에서 특별한 의미가 있습니까? 비 ASCII 문자입니까?왜이 문자가 내 프로그램을 멈추게합니까?
큰 텍스트 내에서 고유 한 n 문자의 부분 문자열 각각에 대해 Markov 체인을 만들려고합니다. 새로운 고유 한 하위 문자열을 발견 할 때마다 값이 256 요소 벡터 (확장 ASCII 테이블의 각 문자에 대해 하나의 요소) 인 맵에 입력합니다.
이for(int i=0; i<lines.size(); i++) cout << lines[i] << endl;
전체 텍스트 파일에 표시 : 나는 파일의 전체 내용을 ("선"ifstream과의 getline을 사용하여 구축 된 텍스트 행의 벡터이다) 인쇄 할 때
아무 문제 없습니다 콘솔. 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);
}
내가 디버거를 통해 걸어, 그리고 한 그것은 나를 밖으로 배변 번째 행의 1 열에 도달 할 때 - 아니 오류 또는 아무것도. 호출 함수가 아니라이 함수 내에서 실패합니다.
내가 사용중인 파일은 크리스마스 캐롤 (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
는 두 번째 줄에 첫 번째 문자를 반환해야 함수 나누기. 줄 바꿈을 없애거나 프로그램에서 "lines"벡터를 한 줄씩 빌드하면 이런 일은 일어나지 않습니다. 어떤 생각이 잘못된거야?
무엇이'moveSpaces'입니까? –
내 디버거가 내게 결코 쓰레기를 던지지는 않는다. 당신의 생각은 분명하지 않다. 분명히 –
솔직히, 나는이 질문의 머리 나 꼬리를 만들 수 없다. "실패"는 무엇을 의미합니까? – MSalters