Microsoft Visual C++ 2008의 H5 파일에서 데이터 세트를 읽습니다. 모든 것이 int 및 double 유형의 데이터에 잘 작동하지만 문자열을 찾을 때 문제가 발생합니다. H5 파일에는 18 개의 고정 길이 24 개의 문자열이 있습니다. 내 코드는 다음과 같습니다.C++에서 hdf5에서 문자열 읽기.
StrType strdatatype(PredType::C_S1, 24);
char *buffer1[18];
DataSet datasetCurveNames = riskFactorsH5.openDataSet("/gstrCurveNames");
datasetCurveNames.read(&buffer1, strdatatype);
실행 중 버퍼 1은 불량 포인터로 채워집니다. 대안으로 H5T_VARIABLE을 사용하여 수정 된 가변 길이 문자열을 관리하려고 시도했습니다.
이 또한 실패합니다. 누군가가이 문제에 관해 밝혀 낼 수 있다면 많은 도움이 될 것입니다.
건배, 루카스
어떻게 작동합니까? 'field_value'에 대한 메모리가 언제 할당됩니까? – Walter
@Walter std :: string 클래스에는 자체 메모리 관리가 포함되어 있습니다. std :: string을 만들고 C 문자열로 지정할 수 있습니다. 데이터를 적절하게 저장하기 위해 내부 배열의 크기를 조정합니다. 또는 std :: string :: resize를 직접 호출하여 내부 메모리 배열의 크기를 변경하고 문자를 할당 할 수 있습니다. std :: string 및 해당 메모리에 대한 자세한 내용은 http://stackoverflow.com/q/9521629/950677을 참조하십시오. – Nathan
나는 그 모든 것을 알고있다. 내가 모르는 것은'DataSet :: read()'가 C- 문자열을 할당한다는 것이다. 이것은 데이터 유형에서 명백한 것입니까? (나를 위해 아닌). – Walter