Win32 API 读取文件
win32 api reading file
>我正在尝试使用 WIN32 api 读取文件,但当我尝试打印一个字符时,它完全是胡言乱语我尝试更改文件编码:unicode,ansi,utf-8,但问题仍然存在
#include <windows.h>
#include <iostream>
using namespace std;
int main(){
TCHAR buff[512];
DWORD wr,pos;
DWORD bytesWritten;
DWORD len = (DWORD)strlen(buff);
HANDLE f = CreateFile("test.txt",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(f==INVALID_HANDLE_VALUE)
{
cout<"error";
}
ReadFile(f, buff ,len,&wr, NULL);
cout<<buff[0];
CloseHandle(f);
return 0;
}
打开文件进行写入,然后尝试读取是一个主要问题。
此外,T的东西不好,但在这个具体的例子中可能不会伤害你。
但是摆脱它,然后打开文件进行阅读。
简单的错误:缓冲区长度计算。您有一个任意的字符串长度。使用std::end(buff) - std::begin(buff)
获取缓冲区长度。或者适当的sizeof
表达。
此外,通过 API 函数读取缓冲区不会使其终止零。您需要保留报告的读取字节数,并以某种方式使用它。例如,创建一个std::string
。
GENERIC_WRITE
模式打开文件,但无法读取它。如果要读取和写入,请将其更改为 GENERIC_READ | GENERIC_WRITE
。如果您只想阅读,请更改为 GENERIC_READ
。
此外,表达式strlen(buff)
不会为您提供缓冲区的大小。更改为
sizeof(buff) / sizeof(buff[0])
.
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量