gpt4 book ai didi

c++ - cout 时 cstring 上的额外字符

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:21 24 4
gpt4 key购买 nike

我有一个 char[4] dataLabel 当我说

wav.read(dataLabel, sizeof(dataLabel));//Read data label
cout << "Data label:" <<dataLabel << "\n";

我得到了输出 Data label:data� 但是当我遍历每个字符时我得到了正确的输出,它应该是“数据”。

for (int i = 0; i < sizeof(dataLabel); ++i) {
cout << "Data label " << i << " " << dataLabel[i] << "\n";
}

sizeof 返回 4。我不知道问题出在哪里。

编辑:更让我困惑的是,我程序中早期的基本相同代码运行完美。

ifstream wav;
wav.open("../../Desktop/hello.wav", ios::binary);
char riff[4]; //Char to hold RIFF header

if (wav.is_open()) {
wav.read(riff, sizeof(riff));//Read RIFF header
if ((strcmp(riff, "RIFF"))!=0) {
fprintf(stderr, "Not a wav file");
exit(1);
}
else {
cout << "RIFF:" << riff << "\n";

这会按预期打印 RIFF:RIFF

最佳答案

您的字符数组中缺少空终止符。尝试将其设为 5 个字符并将最后一个字符设为“\0”。这让程序知道您的字符串已完成,而无需知道大小。

What is a null-terminated string?

关于c++ - cout 时 cstring 上的额外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com