Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用文件映射从文件中读取数据_C++_Api - Fatal编程技术网

C++ 使用文件映射从文件中读取数据

C++ 使用文件映射从文件中读取数据,c++,api,C++,Api,我想从文件(.txt)中读取数据并将其推入编辑框。 我用纯API编写C++。 HANDLE hFile; HANDLE hMapFile; LPVOID pMemory; 及 结果:空白,编辑框中无任何内容 我搜索了一些页面,但没有解决 当我尝试通过设置断点进行调试时,如下图所示: (很抱歉,我无法发布图像) hFile是0xFFFFFF,所以我认为错误是CreateFile,但我不明白 请帮我解决这个问题。谢谢 hFile = CreateFile((LPCWSTR)szFileName,

我想从文件(.txt)中读取数据并将其推入编辑框。 我用纯API编写C++。
HANDLE hFile;
HANDLE hMapFile;
LPVOID pMemory;

结果:空白,编辑框中无任何内容

我搜索了一些页面,但没有解决

当我尝试通过设置断点进行调试时,如下图所示:

(很抱歉,我无法发布图像)

hFile是0xFFFFFF,所以我认为错误是CreateFile,但我不明白

请帮我解决这个问题。谢谢

hFile = CreateFile((LPCWSTR)szFileName,....

为什么要选LPCWSTR?如果你需要那个演员,你就做错了。使用调试器调查每个步骤,以了解更多错误。

它在哪一行失败?CreateFile、CreateFileMapping和MapViewOfFile的结果是什么。很可能其中一个正在失败。您应该检查代码中是否有错误的返回值。您最好希望该文件有一个终止NUL char(此时我有点怀疑)。从
CreateFile
文档中:
如果函数失败,返回值无效。要获取扩展的错误信息,请调用GetLastError。
@ThùyDương:您缺少很多错误处理。一旦
CreateFile()
开始工作,请记住映射将在字节上运行,因此
(LPCWSTR)pMemory
仅在文件内容为UTF-16编码且以null结尾时才能正常工作。而
WM_SETTEXT
仅在程序为Unicode编译且
hwnEdit
为Unicode窗口的情况下才能使用UTF-16文本。这需要做很多假设。这不是很好的编程实践。+1我同样怀疑这是在启用Unicode设置的情况下编译的,
szFileName
是一个
char
缓冲区,前面提到的cast试图纠正这个问题。此外,文件本身很可能也是窄字符,这意味着即使OP解决了这个问题,它们也会有另一个同样恼人的问题。@ScottMcP MVP:感谢您的推荐,我编辑了:wchar_t*szFileName=0;szFileName=L“abc.txt”;hFile=CreateFile(szFileName,通用|读|通用|写,文件|共享|读|文件|共享|写,0,打开|现有,文件|属性|存档,NULL);但执行此行时调试器中的hFile值仍然为:0xFFFFFF。什么错误???@ThùyDƵng:您需要调用
GetLastError()
来找出失败的原因。很可能是,该文件在当前搜索路径上的任何位置都不存在(因为您正在指定.txt文件的相对路径),或者该文件已被其他文件打开,并且没有共享对该文件的访问权限。
hFile = CreateFile((LPCWSTR)szFileName,....