-3
대용량 텍스트 파일 (예 : 30GB)에서는 아래 프로그램이 실행되지 않습니다.
이 프로그램은 단순히 텍스트 파일 형식을 변환하기위한 것입니다.
문제 해결 방법을 알려주십시오.
#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include </usr/include/pcl-1.7/pcl/io/pcd_io.h>
#include <pcl/point_types.h>
int main (int argc, char** argv)
{
int r,g,b;
if(argc!=3)
{
fprintf(stderr,"Usage:%s\n(1)Input_XYZRGB_filename\n(2)Output_PCD_filename\n",argv[0]);
exit(1);
}
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGB>);
std::ifstream ifs(argv[1]);
std::string buf;
for(size_t i=0; ifs && getline(ifs, buf); i++)
{
// std::cout << buf << std::endl;
std::istringstream is(buf);
pcl::PointXYZRGB pnt;
is >> pnt.x
>> pnt.y
>> pnt.z
>> r
>> g
>> b;
pnt.r= (uint8_t)r;
pnt.g= (uint8_t)g;
pnt.b= (uint8_t)b;
cloud->push_back (pnt);
}
pcl::io::savePCDFileASCII(argv[2], *cloud);
return 0;
}
작동하지 않는 기능은 무엇입니까? 오류 메시지가 나타 납니까? 더 구체적으로 말하십시오. – TartanLlama
내 첫 번째 내기는 RAM이 부족하다는 것입니다. 핵심은 매우 큰 파일을 스트림으로 처리하고 파일 포인터가 데이터 유형을 오버 플로우 할 수 있다는 점에 매우주의해야한다는 것입니다. 정말로, "그것은 작동하지 않습니다"는 끔찍한 문제 설명입니다. –
그래서 30GB 파일을 메모리로 읽은 다음 새 파일에 다시 쓰기 전에 저장하고 있습니까? 얼마나 많은 메모리가 컴퓨터에 저장되어 있습니까? 데이터를 바이너리 형식으로 저장하려면 적어도 10-15GB가 필요합니다. –