Bor*_*her -2 c++ file dicom visual-studio
ifstream fp;
fp.open(path, ios::in | ios::binary); //path is the path of the DICOM file I want to read
fstream output;
output.open("C:\\Users\\Z00\\dump.txt", ios::in | ios::out | ios::trunc | ios::binary);
if (fp.is_open())
{
while (getline(fp, rbuffer))
output << rbuffer;
fp.close();
}
Run Code Online (Sandbox Code Playgroud)
我使用上面的代码从二进制模式读取DICOM文件到txt文件.
现在如果我使用记事本或任何其他文档查看器打开文本文件,它会显示十六进制编辑器在打开DICOM文件时显示的完全相同的内容.
现在我想操纵文本文档中的数据.所以我尝试将文本文件的内容打印到控制台中,但它打印出完全的乱码.
为什么?
如果我想访问和操作二进制数据,我该怎么办呢?
如果您不太清楚使用的文件格式,则无法有意义地处理任何二进制文件的内容.
当然,您可能需要使用二进制读取操作,如std :: istream :: read,std :: istream :: get等...要明智地使用它们,您需要花费数周的时间来研究DICOM文件格式.
也许DICOM联盟提供了一些免费软件库来读取这些文件.查看GDCM(或使用常见的解析技术开发您自己的).
顺便说一句,使用像getline这样的面向文本的函数对二进制文件没有多大意义(二进制文件可以包含空字节和包含10 -ie的字节\n
,UTF-8或ASCII-在任何地方).
归档时间: |
|
查看次数: |
137 次 |
最近记录: |