c++添加带有WriteFile错误的文本变量

标签 c++ writefile

我的问题是,当我使用它时:

LPSTR a = "0";
LPSTR b = "1";
LPSTR c = "2";
LPSTR d = "3";
LPSTR e = "4";

TCHAR strex[5];
DWORD x;

myFile = CreateFile("C:\\a.txt", FILE_WRITE_DATA, NULL, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);

TCHAR n[5];
StringCchCopy(n, 5, a);
StringCchCat(n, 5, b);
StringCchCat(n, 5, c);
StringCchCat(n, 5, d);
StringCchCat(n, 5, e);

strex = n;

WriteFile(myFile, strex, (DWORD)(sizeof(strex)), &x, NULL);
CloseHandle(myFile);

此行出现此错误:strex = n; 错误 C2106:“=”:左操作数必须是左值

如果我将 TCHAR strex[5]; 更改为 TCHAR strex;,则会出现以下错误:

错误 C2440:“=”:无法从“TCHAR [5]”转换为“TCHAR”

错误 C2664:“WriteFile”:无法将参数 2 从“TCHAR”转换为“LPCVOID”

有没有办法用不同的代码来完成我想做的事情?帮助将不胜感激。

最佳答案

您必须使用旧的编译器,因为 C2106 是错误的错误。应该是

错误 C3863:数组类型“TCHAR [5]”不可分配

当你:

TCHAR strex[5];

您正在堆栈上创建一个包含五个字符的数组。 strex 是指向该数组的指针。您无法更改该指针。所以当你:

strex = n;

您要求将指针 n 分配给指针 strex。如果你想要一个指向 n 的指针,那么:

TCHAR* strex= n;

会起作用。但您甚至不必这样做,您已经有了带有 n 的指针!

WriteFile(myFile, n, (DWORD)(sizeof(n)), &x, NULL);

关于c++添加带有WriteFile错误的文本变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45247962/

相关文章:

c++ - 使用 WriteFile 将 RegQueryValueEx 值写入文件失败

c++ - 参数依赖查找是否也只搜索 namespace 或类?

c++ - 这是在 C++ 中将一个类对象包含在另一个类中的最佳方式

c++ - 将字符指针存储到容器中

java - 如何通过读取文件并将其写入另一个文件来为我的类(class)编写单元测试?

c++ - 如何确保在文件 IO (WriteFile()) 上将数据刷新到 HDD(未缓冲)

c++ - 在访问 struct 的不同属性的 C++ 函数中重用代码

c++ - 如何在 32 位和 64 位环境中使用 intptr_t 可靠地专门化模板?

c - C 编程中文件中写入了错误的详细信息

c++ - 即使使用 FILE_FLAG_OVERLAPPED,Windows WriteFile 也会阻塞