我正在阅读格式类似于:
TIME, x, y, z
00:00:00.000 , 1, 2 , 3
00:00:00.001 , 2 , 3 , 4
等,以及类似于以下的代码:
std::ifstream& istream;
char buffer[15];
double seconds, hours, mins; // initialised properly in real code
// to read in first column
istream.get(buffer, 14, ',');
int scanned = std::sscanf(buffer, "%d:%d:%lf", &hours, &mins, &seconds);
在大多数情况下,它在第一列中读取良好。但是,有时 sscanf 会失败,当我使用 Codegear 调试器检查缓冲区中的内容时,我看到它已经读入\000:00:023
例如。出于某种原因,它\0
在前面收集了一个空字符 , 。当我查看文本文件时,它似乎与正确读取的所有其他时间值的格式相同。为什么偶尔会添加一个空字符?有解决办法吗?