将文件名存储在数组VC ++中

时间:2016-05-23 05:44:22

标签: arrays visual-c++

我试图将所有文件名都放入数组中。但是在读完所有文件名后,数组只有最后一个文件名;

child-select

我在此代码中遇到了什么问题.. 提前谢谢..

1 个答案:

答案 0 :(得分:3)

LPCWSTR filenames[30];

上面是一个字符数组。它不是一个字符串数组。它也太短,不能包含MAX_PATH长的文件名。

使用wchar_t **buf;创建字符串数组,或使用std::vectorstd::string

如果文件句柄无效,请不要关闭它。

请勿使用TCHAR,除非它是某些家庭作业的一部分。只需使用wchar_t for Windows。

#include <Windows.h>
#include <iostream>
#include <vector>
#include <string>

int main() 
{
    std::vector<std::wstring> vec;

    wchar_t *directory = L"D:/*.*";
    WIN32_FIND_DATA ffd;
    HANDLE handle = FindFirstFile(directory, &ffd);
    if (handle != INVALID_HANDLE_VALUE) 
    {
        do {
            vec.push_back(ffd.cFileName);
        } while (FindNextFile(handle, &ffd));
        FindClose(handle);
    }
    else 
    {
        OutputDebugString(L"Nothing to display \n");
    }

    for (unsigned int i = 0; i < vec.size(); i++)
    {
        OutputDebugString(vec[i].c_str());
        OutputDebugString(L"\n");
    }

    getchar();
    return 0;
}