tagreader: Fix displaying of seconds in length, UTF-8 for ostream

The padding was wrong, 8 seconds were displayed as 0:80 instead of 0:08.
Also make the output of tagreader and tagreader_c the same, including
the encoding, which was still ISO-8859-1 for std::ostream.
This commit is contained in:
Urs Fleisch
2023-10-21 15:57:26 +02:00
parent 0db487bf61
commit 135c0eb647
4 changed files with 16 additions and 15 deletions

View File

@ -56,18 +56,19 @@ int main(int argc, char *argv[])
cout << "genre - \"" << tag->genre() << "\"" << endl;
TagLib::PropertyMap tags = f.properties();
unsigned int longest = 0;
for(auto i = tags.cbegin(); i != tags.cend(); ++i) {
if (i->first.size() > longest) {
longest = i->first.size();
if(!tags.isEmpty()) {
unsigned int longest = 0;
for(auto i = tags.cbegin(); i != tags.cend(); ++i) {
if (i->first.size() > longest) {
longest = i->first.size();
}
}
}
cout << "-- TAG (properties) --" << endl;
for(auto i = tags.cbegin(); i != tags.cend(); ++i) {
for(auto j = i->second.begin(); j != i->second.end(); ++j) {
cout << left << std::setfill(' ') << std::setw(longest) << i->first << " - " << '"' << *j << '"' << endl;
cout << "-- TAG (properties) --" << endl;
for(auto i = tags.cbegin(); i != tags.cend(); ++i) {
for(auto j = i->second.begin(); j != i->second.end(); ++j) {
cout << left << std::setfill(' ') << std::setw(longest) << i->first << " - " << '"' << *j << '"' << endl;
}
}
}
@ -113,7 +114,7 @@ int main(int argc, char *argv[])
cout << "bitrate - " << properties->bitrate() << endl;
cout << "sample rate - " << properties->sampleRate() << endl;
cout << "channels - " << properties->channels() << endl;
cout << "length - " << minutes << ":" << setfill('0') << setw(2) << seconds << endl;
cout << "length - " << minutes << ":" << setfill('0') << setw(2) << right << seconds << endl;
}
}
return 0;