C / C ++ 등) (cin.getline의 효율성을 얻는다

비교 후, 산술 문제를하고, 사용 데이터 라인에 시간이 필요 많이 걸릴에서이 cin.getline에서 C ++ STL의 C 언어 라이브러리 () 함수와 기능을 얻을 수의 결과, 즉보다 효율적으로 실행됩니다 발견 현상의 주된 이유 :

해야

캐릭터의 현재 위치가 전달 넘으면 파라미터 검출시에이어서, 제 2 길이 파라미터의 길이를 통과하고, 송신 파라미터의 복수의 검출 개별적으로 검출 할 필요 : cin.getline을

() 가져옵니다 그가 발생 개행 문자 또는 EOF에 도달 할 때까지이 직접 실행됩니다. 적은 세로 길이를 감지

말하기 상대적으로, 자신의 장점과 단점을 가지고

cin.getline ()보다 유연한 제어 들어오는 길이

그리고 메모리 오버 플로우 문제로 이어지는, 더 많은 응용 프로그램의 메모리 공간의 시작보다, 사용자, 즉 일반적으로 입력하지 않은 줄 바꿈 또는 EOF 문자를 잘못된 시간을 입력 할 수 있습니다 가져옵니다.

전자의 이점은, 고정 된 크기가이 문제를 회피하기 위해 전달 될 수있다.

그러나 이렇게도 현저한 결점은,보다 판정의 길이보다 소정의 제목 또는 범위의 입력 길이 및 입력이 권리를 확인하는 경우의 계산량의 CPU가, 상대가 대전 물일 증가 원인 생성 하 라인 당 일반 (사실, 데이터는 일반적으로 엄격한 심사있다 감지하는 배경에서 경주 후) 제목을 보장하기 위해, 더 많은 사용으로 기울어해야와는 8000 + 데이터 라인에, 시간을 절약 도착, 데이터의 양이 더 이상 25 자 없다 시간은 cin.getline 거의 상세한 데이터를 검사하지 않았다, 50MS,하지만 격차가 아직도 조금 분명보다 더 빠르게 얻을 수 있습니다.

그러나 공식적인 프로젝트에, 입력 데이터 경우, 문자는 * 데이터의 STR의 길이는 고정되어 있지 않거나이 상대적 얻을 수 있기 때문에 시간이 불확실한 것으로, 가게에 고정 된 메모리 공간에 적용, 당신은 cin.getline을 사용하는 것을 선호한다 더 보안, 메모리 오버 플로우 문제의 발생을 줄이거 나 다른 버그의 출현 위험을 감수 할 수 있습니다.

cin.getline은 거의 동일해야 :

cin.getline (c, 길이);

경우 (나는 <길이; INT 나 0 = I ++) C [I] = getchar가 (); 

이 문서가 잘못 이해이기 때문에, 올바른 희망. 

게시 18 개 원래 기사 · 원 찬양 8 ·은 30000 +를 볼

추천

출처blog.csdn.net/qq_20408397/article/details/83685307