std::vector<double>
을 파일에 저장하려고 시도하고 std::vector<double>
을 다시 읽으려고합니다. rex (original answer)의 코드는 std::vector<char>
에서 작동하지만 double 값에서는 작동하지 않습니다. 복식으로 작업하도록 수정하면 숫자는 소수점을 잃게됩니다. 여기 내 시도 (수정 된 코드)파일에서 더블 벡터 저장 및 읽기 C++
#include <iostream>
#include <algorithm>
#include <fstream>
#include <iterator>
#include <vector>
std::string filename("savefile");
std::vector<double> myVector{1321.32132,16.32131,32.321,64,3213.454};
void write_vector_to_file(const std::vector<double>& myVector, std::string filename);
std::vector<double> read_vector_from_file(std::string filename);
int main()
{
write_vector_to_file(myVector, filename);
auto newVector{read_vector_from_file(filename)};
//printing output
std::cout << newVector.at(1) << std::endl;
return 0;
}
void write_vector_to_file(const std::vector<double>& myVector,std::string filename)
{
std::ofstream ofs(filename,std::ios::out | std::ofstream::binary);
std::ostream_iterator<char> osi{ofs};
std::copy(myVector.begin(),myVector.end(),osi);
}
std::vector<double> read_vector_from_file(std::string filename)
{
std::vector<double> newVector{};
std::ifstream ifs(filename,std::ios::in | std::ifstream::binary);
std::istreambuf_iterator<char> iter(ifs);
std::istreambuf_iterator<char> end{};
std::copy(iter,end,std::back_inserter(newVector));
return newVector;
}
이 코드를 출력하는 대신 16.32131
의 16
입니다. 두 배로이 작업을하려면 어떻게해야합니까? 감사합니다.
이미 수정 한 코드를 게시하고 그 코드가 잘못된 점을 설명 한 다음 도움을 줄 수 있습니다. –
죄송합니다 @SamKuhmonen, 게시물을 업데이트했습니다. – nipunasudha
파일을 쓰는 대신 std :: strstream에서 스트림을 전송하면 더 나은 [mcve]를 만들 수 있습니다. –