문제

나는 읽었다 istream::가져오기 그리고 여전히 의심이 남아있습니다.내 구분 기호가 실제로 NULL '\0' 문자라고 가정해 보겠습니다. 이 경우에는 어떻게 되나요?내가 읽은 것에서 :

If the delimiting character is found, it is not extracted from the input sequence and remains as the next character to be extracted. Use getline if you want this character to be extracted (and discarded). The ending null character that signals the end of a c-string is automatically appended at the end of the content stored in s.

내가 "readline"보다 "get"을 선호하는 이유는 문자 스트림을 "streambuf"로 추출하는 기능 때문입니다.

도움이 되었습니까?

해결책

이와 같은 경우 구분 기호가 입력 스트림에 걸리지 않습니다.

std::string read_str(std::istream & in)
{
        const int size  = 1024;
        char pBuffer[size];
        in.getline(pBuffer, size, '\0');
        return std::string(pBuffer);
}

구분 기호로 '\0'이 있고 문자열이 1024바이트보다 크지 않은 경우의 예입니다.

다른 팁

나는 당신의 문제를 잘 이해하지 못합니다.

msdn 웹사이트에는 get 함수에 대해 다음과 같이 나와 있습니다.

모든 경우에 구분 기호는 스트림에서 추출되지도 않고 함수에 의해 반환되지도 않습니다.대조적으로 getline 함수는 구분 기호를 추출하지만 저장하지는 않습니다.모든 경우에 구분 기호는 스트림에서 추출되지도 않고 함수에 의해 반환되지도 않습니다.대조적으로 getline 함수는 구분 기호를 추출하지만 저장하지는 않습니다.

http://msdn.microsoft.com/en-us/library/aa277360(VS.60).aspx

msdn 사이트에서는 구분 기호가 스트림에서 추출되지도 않고 함수를 통해 반환되지도 않는다고 알려주기 때문에 문제가 없을 것이라고 생각합니다.

아니면 여기서 요점을 놓치고 있는 걸까요?

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