2011-09-04 3 views
4

c에서 newline delimeter ([^ \ n])를 scanf와 함께 사용할 수 있습니다. 나는 선을 저장할 수있는 것을 사용한다. 마찬가지로 cin에 대해서 getline을 사용할 수 있습니다.cin에 자신의 delimeter를 제공하는 방법은 무엇입니까?

단락을 저장해야하는 경우 [^ #] 또는 [^ \ t]과 (와) 같은 특수 문자 구분 기호를 사용하여 기능을 시뮬레이션 할 수 있습니다 (c의 scanf 함수 사용).

char a[30]; 
scanf("%[^\#]",a); 
printf("%s",a); 

cpp에서 cin 객체를 사용하여 비슷한 기능을 수행하는 방법.

감사합니다.

+0

의 getline가 선택 사양 인 세 번째 인자를 구분 기호 (기본값은 '\ n'') –

답변

10

istream.getline는 대신 기본 '\n'의 사용하기 deliminator을 지정할 수 있습니다 :

cin.getline (char* s, streamsize n, char delim); 

또는 안전하고 쉬운 방법은 std::getline을 사용하는 것입니다. 이 방법을 사용하면 텍스트에 맞게 충분히 큰 버퍼를 할당 할 필요가 없습니다.

string s; 
getline(cin, s, '\t'); 

편집 : 당신이 단지 ++ 여러 deliminated 라인을 읽을 수있는 적절한 방법을 C를 배우고 같은 소리 때문에

그냥 보조 노트로

은 다음과 같습니다

string s; 
while(getline(cin, s, '\t')){ 
    // Do something with the line 
} 
+1

도움을 주신 GWW에게 감사드립니다. 나는 이것을 알지 못했다. :-) 나는 이것을 테스트했고 도움이되었습니다. – CppLearner

+0

네, 실제로 저는 C++을 배우고 있습니다. 사이드 노트 주셔서 감사. 나는 그것을 명심 할 것이다. – CppLearner

관련 문제