C ++ 파일 열기 및 클래스 객체에 데이터를 입력
문제
간단한 질문, 희망적으로 쉬운 방법이며, 내가 올바른 / 효율적인 방법으로하고 있는지 확인하고 싶습니다.
클래스 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
값으로 기능합니다.
제휴하지 않습니다 StackOverflow