gpt4 book ai didi

C++ 写入文本文件时出现奇怪的字符

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

我有一个程序,每当用相机拍摄照片时,它都会写出帧数和当前系统时间:

SYSTEMTIME st;
GetSystemTime(&st);
lStr.Format( _T("%d %d.%d.%d.%d\r\n"),GetFrames() ,st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);

std::wfstream myfile;
myfile.open("test.txt", std::ios::out | std::ios::in | std::ios::app );
if (myfile.is_open())
{
myfile.write((LPCTSTR)lStr, lStr.GetLength()*sizeof(TCHAR));
myfile.close();
}
else {lStr.Format( _T("open file failed: %d"), WSAGetLastError());
}

程序输出的文本文件似乎正确地写入了数据,但我得到了每行开头不应该出现的空格和字符。该网站似乎没有正确格式化空格,所以我会张贴图片,这就是文本文件的样子。除了零之外,该文件有时还会显示项目符号点。

enter image description here

如您所见,第一行很好,但我写入文本文件的时间越长,情况似乎越糟。该程序每秒大约写入文件 10 次。我是 C++ 的新手,我不确定是什么原因造成的。我试图寻找与此类似的其他问题,但他们似乎没有我正在寻找的解决方案。任何帮助将不胜感激。

最佳答案

解决方案分为两部分:

lStr.Format( _T("%d   %d.%d.%d.%d\r\n"),GetFrames() ,st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);

应该是

lStr.Format( _T("%lu   %d.%d.%d.%d\n"),GetFrames() ,st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);

作为GetFrames()返回 DWORD这是 unsigned long并且您将文件写为文本,所以 \n转换为 \r\n如果需要,取决于操作系统。

另一部分是wfstream::write的第二个参数是字符数不是字节数所以

myfile.write((LPCTSTR)lStr, lStr.GetLength()*sizeof(TCHAR));

应该是

myfile.write((LPCTSTR)lStr, lStr.GetLength());

关于C++ 写入文本文件时出现奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32431004/

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