>백엔드 개발 >C++ >내 C 코드가 텍스트 파일의 다양한 개행 끝을 강력하게 처리하도록 하려면 어떻게 해야 합니까?

내 C 코드가 텍스트 파일의 다양한 개행 끝을 강력하게 처리하도록 하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-05 04:34:09606검색

How Can I Make My C   Code Robustly Handle Different Newline Endings in Text Files?

다양한 줄바꿈 엔딩을 우아하게 처리하기 위해 std :: ifstream 가져오기

소개

작업할 때 C의 텍스트 파일에서는 다양한 개행 인코딩을 적절하게 처리하는 것이 중요합니다. 이 기사에서는 다양한 줄 바꿈 문자를 처리하기 위한 표준 C 메커니즘과 모범 사례를 살펴보고 포괄적인 솔루션을 제공합니다.

도전 과제: 일관되지 않은 줄 바꿈 끝

특히 이 질문은 우려를 불러일으켰습니다. istream&의 동작 getline( istream& is, string& str ); 다양한 개행 인코딩을 만날 때. 목표는 다양한 텍스트 파일 형식과의 호환성을 보장하면서 사용자에게 불편한 수정을 방지하는 것입니다.

표준 C 제한 사항

C 런타임은 이론적으로 플랫폼별 줄 바꿈을 처리해야 하지만 규칙에 따라 크로스 플랫폼 데이터 교환에는 신뢰할 수 없습니다. 따라서 더욱 강력한 솔루션이 필요합니다.

사용자 정의 솔루션: safeGetline() 함수

이 문제를 해결하기 위해 safeGetline()이라는 사용자 정의 함수가 도입되었습니다.

std::istream& safeGetline(std::istream& is, std::string& t)
{
    t.clear();

    // ... Implementation omitted for brevity ...

    return is;
}

이 함수는 입력 스트림에서 문자를 반복적으로 읽고 세 가지 일반적인 개행 인코딩("r", "n" 및 "rn")에 따라 달라집니다. 또한 빈 줄이 올바르게 처리되는지 확인합니다.

테스트 프로그램

safeGetline() 함수의 기능을 시연하기 위해 테스트 프로그램이 제공됩니다.

int main()
{
    // ... Implementation omitted for brevity ...

    int n = 0;
    std::string t;
    while(!safeGetline(ifs, t).eof())
        ++n;
    std::cout << "The file contains " << n << " lines." << std::endl;

    return EXIT_SUCCESS;
}

이 프로그램은 텍스트 파일을 읽고 줄 수를 세면서 모든 줄 바꿈을 우아하게 처리합니다. 인코딩.

결론

safeGetline() 함수는 C 입력 스트림의 다양한 개행 끝을 처리하기 위한 강력한 솔루션을 제공합니다. 이를 통해 개발자는 다양한 텍스트 파일 형식 및 플랫폼과 호환되는 코드를 작성할 수 있어 사용자의 불편을 최소화하고 데이터의 올바른 처리를 보장합니다.

위 내용은 내 C 코드가 텍스트 파일의 다양한 개행 끝을 강력하게 처리하도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.