char数组的数据显示
今天在做一个读取mp3文件的metadata信息的时候遇到两个很简单的问题,由于长时间没有使用标准c++,导致花了一点时间才解决,看来c++基础基本荒废了啊。
struct.h
1 |
|
这是mp3的ID3V1的标签格式,128数据在文件的最末尾,起始是三个字节的“TAG”
main.cpp
1 |
|
错误1,ifstream::seekg的作用是移动当前读取文件指针的位置,第一个参数是offset偏移(向后),我已经使用ios::end,也就是说参考位置到了文件末尾,我又向后移动了128,这样读取的信息肯定是空的,应该此处是-128,即向前偏移128位,这样才能获取到最后的128字节信息。
错误2,我直接cout<<tagData.Header,以为只会输出“TAG”这三个字符,但是实际结果是后面还输出了Title的信息。因为Header此时是一个字符串指针,指向的是第一个字节,而不是我以为的字符串(string),输出的时候结果是输出指针后面的所有字节,直到遇到第一个字符串结束符(\0)。所以正确的用法是将Header转化为std::string,然后显示。
char数组的数据显示
http://yoursite.com/2019/05/24/char数组的数据显示/