2017-11-15 12 views
-1

파일을 읽고 문자가 10보다 큰 정수 값 앞에 나오는지 확인하려고합니다. 파일의 항목 공백으로 구분되며 목록 끝에 "endl;"이 있습니다.숫자가 아닌 문자가 나오기 전에 특정 값 이상의 정수가 나타나는지 확인 C++

지금까지 파일의 정수 배열을 가져 오려고했습니다. 배열을 읽고 10이 넘는 지 확인했습니다. 똑같이 파일을 통해 문자를 읽었는지 확인했습니다. 숫자가 아니지만 숫자가 아닌 문자와 너무 큰 정수의 위치를 ​​비교하는 방법을 찾을 수 없습니까? 모든 조언을 크게 주시면 감사하겠습니다!

// i.e. sample file may contain: 
1 2 3 A 6 12 90 //(in which case the letter appears first). 
// example two: 
34A 20 4 5 6 7 //(large number here appears first). 
+0

으로 문자를 있습니까 계속 같은 항목을 int 형 또는 공백으로 구분? 샘플 파일 내용은 도움이 될 것입니다 –

+0

http://idownvotedbecau.se/nocode/ – user0042

+0

@KillzoneKid char 및 int는 동일한 항목 일 수도 같지 않을 수도 있습니다. 나는. 파일은 "1 2 3 A 6 12 90"(문자가 먼저 나타나는 경우) 일 수 있습니다. – Carol

답변

0

정규 표현식을 사용할 수 있습니다. 다음은 C++ 표준이 대상으로하는에 따라 두 개 이상의 당신이 (예를 들어, 01A 용) 제로 패딩 numericals가 없다면이 작동

\d{2,}[a-zA-Z] 

문자가 뒤에 자리

을 찾을 것입니다, 당신은 할 수 있습니다 <regex>을 사용하십시오. 그 이상에 대한 정보 here

Here is an example 모든 경기를 반환하는 방법.

+1

대부분의 경우 정규식 문제와 같은 경우 정규식이 _overshoot_입니다. – user0042

+0

나는 동의하지 않는다. 10 줄 미만의 코드에서 정규식 검색 기능을 작성할 수 있습니다. – ventsyv

+0

당신은 10 줄 미만의 코드에서 좋은 오래된'std :: istream' 텍스트 추출 방법으로도 할 수 있습니다. 그래서 무엇을 할 수 있습니까? – user0042

0

배열이 필요하지 않은 경우 먼저 만나는 배열을 추적하면됩니다. 이 같은

뭔가 :

  • letter_first 변수를 정의만큼 입력 할이 :
    • 읽기는 편지가 있다면 한 가지
    • , 그것은 정수 전에 발생 > 10; letter_first를 true로 설정하고 루프에서 벗어납니다.
    • 숫자가 10보다 큰 경우 문자 앞에 나타납니다. false로 letter_first 설정하고 루프
    • 그렇지 않으면 탈옥, 다음 항목
  • 사용 결과
+0

하지만 문자 대 문자 (2 자리 숫자로 구성 될 수 있음)를 읽는 방법은 무엇입니까? 당신은 하나의 문자로 하나의 정수를 읽을 수있는 것처럼 대답하고 있습니다. – Carol

+0

내가 틀렸을 수도 있지만 오래 전에 정수 열로 바꾸는 방법을 배웠다고 생각합니다. 따라서 정수를 읽는 대신 문자를 읽은 다음 문자가 아니면 정수로 변환합니다. – molbdnilo