2012-11-10 2 views
0

파일에서 두 개의 bignum 및 연산자를 정수 벡터로 읽으려고 시도하고 있습니다 (수학을 수행하기 위해). C++ 문자열을 사용할 수 없습니다. 내가 벡터에 숫자를 읽을 수 있지만, 그래서 나는 그것이 라인의 끝을 인식하지 수 있으며, C++ 파일 처리에 익숙하지 않다C++ 파일에서 Bignums

2308957235.... 
add 
234989234786.... 

:이 파일은 형식에 다음에 시작하기 위해서. 파일을 연 후 내가 가진 : 그냥 공백이나 줄 바꿈을 무시, 벡터에 파일의 모든 것을 던져

vector<int> numbers; 
char inputDigit; 
while(in>>inputDigit) 
    numbers.push_back(inputDigit-48); 

합니다. 나는 몇 시간 동안 내 머리를 두드리는 소리가났다. 그래서 어떤 도움이라도 대단히 감사 할 것이다.

+1

'while' 루프를 다른 루프 안에 보관하십시오. 내부 루프가 문자 'a'를 만날 때까지 외부 루프의 문자열에 추가하십시오. – irrelephant

+0

이것은 또한 char 포인터를 사용할 수 없다는 것을 의미합니까? 그렇지 않다면 다음 문자를 테스트하여 "/ n"인지 테스트 할 수 있습니다. –

+0

char 포인터는 무엇인지 모르겠지만 알아 냈습니다. 기본적으로 당신이 부적절하다고 말한 것을 따라, 나는 다음을 생각해 냈습니다.

 while(in>>inputDigit) { if(inputDigit == 'a' || inputDigit == '+') break; else numbers.push_back(inputDigit-48); } 
Farlo

답변

0

두 벡터를 더 잘 사용하십시오. 하나는 숫자 용이고 다른 하나는 운영자 용입니다. 끝나면 숫자 벡터와 양식 연산자 벡터에서 두 개의 pop_back()을 사용하십시오. 파일을 읽는 동안 sprintf를 사용하십시오. 숫자, 연산자, 숫자 형식을 먼저 받아 들일 논리를 세우십시오.