문제

내가 이를 읽는 기능에서 모든 수에서 파일입니다.문제입을 읽을 때에는 글자가 새로운 라인과 항상을 추구하여 1 과하지 않는 라인의 끝.나는 어떻게 쓰이는 기능은 더 나은?

int v;
    while (!in.eof())
    {
        while (in >> v)
            cout << v << " ";

        cout << endl;
        if (in.eof())
            break;
        in.clear();
        in.seekg(1, ios::cur);
        int a;
        a=0;
    }
도움이 되었습니까?

해결책

파일이 Whitespace (포함) Newlines로 분리 된 int로 구성되면 충분해야합니다.

while( in >> v )
{
    // do something with v
}

파일 후에 in.fail ()이 false이고 in.eof ()가 true 인 경우 형식 오류없이 파일의 끝에 도달했습니다. 그렇지 않으면 int를 읽는 오류가 발생했습니다.

유효하지 않은 입력을 받고 그로부터 복구하려면 복구하는 방법을 알아 내야합니다. 줄 끝까지 건너 뛰고 다시 구문 분석을 시작하려면 이와 같은 것을 사용할 수 있습니다.

in.clear();
in.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );

다른 팁

첫 번째 문제는 위 코드에서 멈추지 않는 라인의 끝.
운전자>>()무시하"검색"을 포함하는 새로운 캐릭터 라인.

방법이 될 수 있는 서면 좋을까?
는 말하지 않고 당신이 무엇을 하려고 하는 번호로 어떤 입력 형식의 파일입니다!

하지만 만약 내가 쓰는 이가 쓸 것을 사용하지 않고 이러한 라인:

    if (in.eof())
            break;
    in.clear();
    in.seekg(1, ios::cur);

을 처리할 때 포맷 텍스트 파일을 참조합의 사용을 추구().

Assumign:
파일 포함되어 그냥 숫자입니다.
당신이 읽고 싶은 모든 숫자로 컨테이너입니다.

std::vector<int>    data;

std::copy(  std::istream_iterator<int>(in),  // An iterator from current point
            std::istream_iterator<int>(),    // To end of file.
            std::inserter(data)              // Destination (insert into data)
         );
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top