문제

간단한 질문, 희망적으로 쉬운 방법이며, 내가 올바른 / 효율적인 방법으로하고 있는지 확인하고 싶습니다.

클래스 T 객체가 있는데, 이는 일반적으로 main () 함수에서 생성되는 벡터에 넣습니다. 그것은 모든 종류의 데이터, 문자열, int, float 등 일 수 있습니다. 다음은 내 기능을 읽는 기본 읽기입니다.

template <class T, class U>
void get_list(vector<T>& v, const char *inputFile, U)
{
ifstream myFile;
T object;

myFile.open("inputFile")
while(!myFile.eof())
   {
   myFile >> object;
   insert(v, object, U)
   }
}

삽입은 데이터를 내 데이터 구조에 삽입하고 삽입하는 또 다른 기능입니다. 나는 이것이 그것이 작동하는지에 대한 데이터를 전달하는 가장 좋은 방법인지 확인하고 싶습니다.

도움이 되었습니까?

해결책

그것은 잘 작동하는 것처럼 보이며, 이것이 아마도 가장 좋은 방법이라고 말할 것입니다. 그러나 왜 직접 테스트하는 대신 여기서 묻는가?

다른 팁

당신은 조건에서 EOF에 대해 테스트하는 오래된 실수를했습니다. 파일 끝을 지나서 읽을 때까지 EOF가 설정되지 않습니다. 따라서이 방법은 원하지 않는 벡터에 하나의 추가 값을 삽입합니다.

template <class T, class U>
void get_list(vector<T>& v, const char *inputFile, U)
{
    ifstream myFile("inputFile");  // Why hard code this?
                                   // When you pass inputFile as a parameter? 
    T object;


    while(myFile >> object)  // Get the object here.
                             // If it fails because of eof() or other
                             // It will not get inserted.
    {
         insert(v, object, U)
    }
}

사용하지 마십시오 .eof() a while-상태. 조건은 True로만 평가됩니다 ~ 후에 파일 끝을 지나서 읽으려는 시도가 이루어졌습니다. 더 좋은 방법은해야합니다

while(myFile >> object)
    insert(v, object, U);

당신의 사용 U 결함이 있습니다. 나는 그것이 무엇에 사용되는지 전혀 모른다. 한 번은 유형으로 사용되지만 또 다른 시간은 insert 값으로 기능합니다.

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