|
#include <dcmtk/dcmdata/dctk.h>
|
|
#include <iostream>
|
|
|
|
int main() {
|
|
std::string lorem_ipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
|
|
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
|
|
"enim ad minim veniam, quis nostrud exercitation ullamco laboris "
|
|
"nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in "
|
|
"reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla "
|
|
"pariatur. Excepteur sint occaecat cupidatat non proident, sunt in "
|
|
"culpa qui officia deserunt mollit anim id est laborum.";
|
|
|
|
std::string long_string = lorem_ipsum;
|
|
while (long_string.size() < 4000) {
|
|
long_string += " " + lorem_ipsum;
|
|
}
|
|
|
|
DcmDataset data;
|
|
OFCondition result;
|
|
|
|
result = data.chooseRepresentation(EXS_LittleEndianExplicit, nullptr);
|
|
if (!result.good()) { return 2; }
|
|
|
|
result = data.putAndInsertString(DCM_SpecificCharacterSet, "ISO_IR 192");
|
|
if (!result.good()) { return 2; }
|
|
|
|
result = data.putAndInsertString(DCM_DetectorDescription, long_string.data(), long_string.size(), true);
|
|
if (!result.good()) { return 2; }
|
|
|
|
result = data.convertToUTF8();
|
|
if (!result.good()) { return 2; }
|
|
|
|
const char* value = nullptr;
|
|
result = data.findAndGetString(DCM_DetectorDescription, value);
|
|
if (!result.good()) { return 2; }
|
|
|
|
std::string new_string = value;
|
|
|
|
std::cout << "Results match: " << (long_string == new_string ? "yes": "no") << std::endl;
|
|
std::cout << "Original size: " << long_string.size() << std::endl;
|
|
std::cout << "Converted size: " << new_string.size() << std::endl;
|
|
std::cout << "Original: ..." << long_string.substr(1000, 48) << std::endl;
|
|
std::cout << "Converted: ..." << new_string.substr(1000, 48) << std::endl;
|
|
|
|
return long_string == new_string ? 1 : 0;
|
|
}
|
|
|