문제

C ++ 메소드와 동일합니까? istream::putback(char) OCAML?

시작에 캐릭터를 추가 할 수있는 방법 Stdin?

도움이 되었습니까?

해결책

당신은 그것을 할 수 없습니다 in_channel 또는 함께 Stream.t. 몇 가지 제안이 있습니다 :

  1. 읽은 캐릭터를 되 찾는 경우 사용을 사용하고 싶을 수도 있습니다. peek 요소를 제거하는 대신 스트림을 검사합니다.

  2. 해당 기능에 C- 인터페이스를 직접 작성하는 운이있을 수 있습니다. 나는 이것이 정말로 나쁜 생각 인 것을 볼 수있다.

  3. 대신 축합기 사용을 고려해 보셨습니까?

  4. 지퍼 또는 스택 인 유형 또는 문자를 다시 밀어 넣을 수있는 다른 구조로 현재 함수 주위에 모듈을 작성하십시오.

다른 팁

OCAML 배터리가 포함되어 있습니다 스트림을위한 훨씬 더 포괄적이고 훨씬 높은 수준의 인터페이스를 특징으로합니다. 당신은 이것을 볼 수 있습니다. 또한 일반적으로 좋습니다.

기본적으로 : 당신은 할 수 없습니다. 배터리 (및 Extlib)는 향상된 I/O 래퍼를 제공하지만이 기능은이 기능을 지원하지 않습니다.

그러나 문자 수준 판독 만 수행하려면 BU가 I/O 스트림을 열거적 (바테 넘 배터리 포함). ENUM은 "다음 값을 얻는"인터페이스 유형으로 일반 열거를 제공하며, 열거의 전면으로 값을 다시 푸시 할 수 있습니다. 그래서 당신은 열렬한 유형으로 stdin을 감을 수 있습니다. char Enum.t 캐릭터를 반환합니다 Enum.next 기능을하고 사용합니다 Enum.push 원치 않는 캐릭터를 다시 앞쪽으로 밀어 넣습니다.

그런 다음 그러한 열거를 다시 찍을 수 있습니다. io (바티오)보다 유연한 인터페이스의 경우, 해당 모듈이 내부 버퍼링을 수행하지 않는 것을 먼저 확인하면 문자 푸시의 의미를 엉망으로 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top