struct DataValue
{
DataValue() : uiQuality(0) {} // Here 0 stands for good.
unsigned int uiQuality;
std::string timeChanged;
float value;
};
std::vector<DataValues> myDataValues
내 응용 프로그램의 어느 시점에서 내 벡터의 데이터가 채워집니다. 아래 파일을 사용하여 쓰고 있습니다.파일에서 데이터 읽기 및 STL 벡터 채우기
std::ofstream myfile("myData.txt", std::ios::app);
for (int j = 0; j < myDataValues.size(); j++)
{
std::string quality;
if(myDataValues[j].quality == 0) {
quality = "good";
}
else {
quality = "bad";
}
myfile << myDataValues[j].timeChanged.c_str() << " " << myDataValues[j].value << " " << quality << std::endl;
}
파일은 다음과 같습니다.
2012-06-25 12:41:56.789 55 good
2012-06-25 12:51:14.782 55 good
2012-06-25 05:25:16.456 62.6925 good
2012-06-25 05:26:11.458 63.4109 good
2012-06-25 05:27:01.459 63.0383 good
2012-06-25 05:27:56.959 61.5266 good
2012-06-25 05:29:01.959 58.5354 good
2012-06-25 05:32:06.963 47.5656 good
2012-06-25 05:33:06.964 44.9916 good
2012-06-25 05:33:11.963 44.8267 good
2012-06-25 05:34:06.965 43.6011 good
2012-06-25 05:34:56.965 43.493 good
2012-06-25 12:51:14.782 52.418 good
2012-06-25 09:49:54.112 0 good
2012-06-25 11:50:30.781 0 good
위의 파일을 다른 응용 프로그램에서 읽고 다른 벡터를 채워야합니다. 채우기 벡터 wheter 중복 또는이 검사가 필요하지 않습니다.
std::vector<DataValues> anotherDataValues
샘플 코드 요청 위의 파일에서 데이터를 읽고 위의 벡터를 채우려면 어떻게해야합니까?
어떻게 효과적으로 처리 할 수 있습니까?
시간과 도움에 감사드립니다.
복제본이 있지만 주요 아이디어는 다음과 같습니다. (머리 위로) : std :: vector anotherDataValues (std :: ostream_iterator (fileObject, ""), std :: ostream_iterator ()); ' –
chris
벡터를 채우는 동안 복제본을 검사 할 필요없이 단순히 데이터 f를 읽으십시오. ROM 파일과 벡터 읽기 당신은 elobaorate 주실 래요? – venkysmarty
나는 질문의 중복을 의미했다; 나는 최근에 몇 가지를 보았다. 이 코드는 'ostream_iterator'를 시작과 끝 위치로 사용하여 벡터를 문자열의 벡터로 효과적으로 읽도록 벡터를 대략 초기화합니다. 간단히 말해서, 같은 일을하는 짧은 루프처럼 이해하기 쉽지 않은 하나의 라이너입니다. – chris