【发布时间】:2013-12-14 10:39:19
【问题描述】:
我已经尝试了 1 个小时来寻找解决方案,但没有任何效果。我正在使用 FindFirstFile 函数来获取文件/文件夹的列表。这部分工作正常,但是当我尝试使用它的 cFilename 时,它给出了一个 wstring 并且它几乎没用。我试图将其转换为 char 以写入文件,它给了我错误。我试图将 wstring 写入文件,它搞砸了并写入了第一个文件系统对象,然后是许多空值。这真的让我很沮丧,我真的需要帮助。我的代码:
{
//wstring writedata = search_data.cFileName + "\n"; //cant append newline to it
//printf(search_data.cFileName); //works
//wstring newline = "\n"; //Cant create newline in wstring
//fwrite(writedata, 1, sizeof(writedata), directorycontents); //writedata I cant set it
//fwrite(search_data.cFileName, 1, sizeof(search_data.cFileName), directorycontents); //writes first fileobject and a lot of nulls, fail
if(FindNextFile(handle, &search_data) == FALSE){
break;}
}
如果有人能告诉我如何将 wstring 转换为 char[],我将不胜感激。我也不知道怎么做,这是我尝试的第一件事。
#include <windows.h>
#include <stdio.h>
#include <string>
using namespace std;
int main(int argc, char* argv[]){WIN32_FIND_DATA search_data;
memset(&search_data, 0, sizeof(WIN32_FIND_DATA));
HANDLE handle = FindFirstFile("c:\\*", &search_data);
FILE *directorycontents = fopen("C:\\testwrite.txt", "w+");
while(handle != INVALID_HANDLE_VALUE)
{
wstring newline = L"\n"; //Cant create newline in wstring
search_data.cFileName += newline;
string test = cstr(search_data.cFileName);
search_data.cFileName += newline;
fwrite(search_data.cFileName, 1, sizeof(search_data.cFileName), directorycontents);
if(FindNextFile(handle, &search_data) == FALSE){
break;}
}}
【问题讨论】:
-
请发布一个完整的可构建示例来演示该问题,然后我将能够为您提供更多帮助。