제가 작업중인 프로젝트의 경우 텍스트 파일에서 정수를 읽으려고합니다. 이 경우, 그들은 같은 U = 220V 같은 변수로 지정됩니다, 그래서 나는 등호이 내가 가진 코드 올라와있다 된 V.에 로그인 한 후 읽기 위해 노력하고 있어요 다음에서텍스트 파일에서 정수로 읽기
if (word[0] == 'U') {
//declaring variables for checking for certain letters
char v = 'V';
char m = 'm';
char M = 'M';
//taking in integer for voltage
while (word[i] != v) {
volt = volt + word[i];
i++;
}
cout << volt << endl;
테스트 케이스의 경우 U = 200V, U = 220V 및 U = 22000mV (m은 밀리이며 나중에 다른 함수로 처리됩니다)의 값이 파일 전체에 무작위로 삽입됩니다. 테스트를 거치면 출력이 표시됩니다.
첫 번째 출력이 정확합니다. 두 번째 및 세 번째 경우에는 처음에는 번호가 느슨하게 보이고 세 번째 경우에는 끝에 0이 추가되었습니다. 나는 원래 그냥 첫 번째 값을 폐기 한 생각, 내가 원래 처음에 읽은 값 전에 읽을 것입니다 가치를 어떻게 볼
volt = volt + word[i];
volt = volt + word[i-1];
에 코드의 라인을 변경했습니다.이에
=200
=200
=20000m
내가 여기 내려다하고 내 코드의 논리에 결함이 있습니까 : 경우, 그것은으로 포맷 출력, 제대로 작동한다면 나는 그것이 할 무엇을 기대 했습니까?
EDIT : 더 이상 디버깅을 시도하면서 while 루프 외부에서 최종 인쇄 라인을 내부로 이동하여 루프가 단계별로 무엇을 출력하는지 확인했습니다. 2로 시작하고 200000m로 끝날 때까지 각 반복 끝에 0을 계속 추가합니다.
std :: getline에는 = 단순하게 분할되는 오버로드가 있습니다. = 뒤에있는 텍스트를 문자열 스트림으로 팝핑하고 정수를 읽습니다. 읽기는 첫 번째 비 정수 문자, 예를 들어 V에서 중지됩니다. 그 문자를 읽으십시오. – user4581301