2009-05-15 4 views
2

Objective-C/Foundation에 콘솔에서 사용자 입력을 읽는 특별한 명령이 있는지 궁금합니다. 출력을 위해 NSLog를 가지고 있기 때문에 아마도 scanf 명령 대신 사용할 수있는 다른 것이있을 것입니다.코코아/파운데이션 도구 콘솔에서 입력을 읽으시겠습니까?

내 도구에 숫자 (사용자 입력)를 읽을 필요가 있습니다. double 또는 int와 같은 유형에서 이러한 입력을 얻는 가장 좋은 방법은 무엇입니까? NSString에 사용자 입력을 얻으려면 어떻게해야합니까?

답변

4

입력에 대한 유일한 실제 코코아 지원은 NSFileHandlefileHandleWithStandardInput입니다. 당신이 저에게 묻는다면 그것은 scanf()보다 더 유용하지 않습니다. 그러나 특정 유형에 대한 입력을 얻으려면 꽤 많이 NSFormatter의 입니다. 표준 항목에는 이미 미리 정의 된 형식 지정기 유형이 많이 있으며 특수화 된 요구 사항이있는 경우 사용자 정의 포맷터를 만들 수 있습니다. 따라서 scanf()보다 조금 더 필요한 것이 있다면, 데이터 (바이트로 scanf() 또는 NSFileHandle로 데이터)를 읽고 NSString을 만들어서 마음의 내용으로 포맷 할 수 있습니다.

+0

fileHandleWithStandardInput은 입력 커서를 움직이는 것처럼 보이지 않는 것조차도 모든 키 누름을 기록합니다. – Mahouk

2

아무 것도 scanf (which is a good thing)과 같지 않습니다. NSFileHandle을 사용하여 stdin에서 데이터를 버릴 수 있습니다. 대화식 입력의 경우 fgets이 좋습니다. strtol/strtoul/strtod, NSScanner 또는 NSNumberFormatter를 사용하여 입력을 숫자 유형으로 변환 할 수 있습니다.

9

나는 일찍 지루해졌으며 'scanf 사용'이라는 이슈를 발견했습니다. 내가 C로 떨어없이 그것을 할 수 있는지보고 싶어하기 때문에, 다음이 와서 :

NSFileHandle *input = [NSFileHandle fileHandleWithStandardInput]; 
while (1) 
{ 
    NSData* data = [input availableData]; 
    if(data != nil) 
    {  
     NSString* aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    } 
} 

나는 누군가가이를 최적화하고 좋네요 (이것은 정말 간단의 PoC CLI 도구를 사용 하였다 만들 수있는 확신)

+1

대부분의 방법을 얻지 만 숫자를 구문 분석하지 않습니다. 또한, 당신이 싫어하는 것을 풀어 놓는 것을 잊지 마십시오. –

+0

은 단지 스 니펫입니다. 하지만 당신 말이 맞아, 내가 그걸 추가 했어. –

+1

이 파일 (애플 리케이션 <데이터)하지만 파이프 (고양이 데이터 | 애플 리케이션) 그래서 더 나은 사용 [입력 readDataToEndOfFile] – Tobias

관련 문제