【发布时间】:2013-06-20 10:05:57
【问题描述】:
我正在尝试在 C++ 中创建一个应用程序,该应用程序将搜索磁盘上的所有 .wav 文件(包括所有子文件夹及其子文件夹等...,整个磁盘搜索,如 Avast 上的防病毒搜索等)和将它们存储在字符串中并稍后保存到文本文件中。我在弄清楚如何实际执行此操作时遇到了麻烦,我可以寻求帮助。
这是我到目前为止所做的,它只是搜索C盘根文件夹,我现在不知道该怎么办。我知道我应该使用某种循环,但我不知道如何真正做到这一点,我想不出任何合乎逻辑的方法。
void finddata()
{
MessageBox(NULL, "finddata called", "Started", MB_OK | MB_ICONINFORMATION);
WIN32_FIND_DATA FindFileData; // A pointer to the WIN32_FIND_DATA structure that receives information about a found file or directory.
HANDLE hFind; // Used to check the return value
hFind = FindFirstFile("C://*.wav", &FindFileData);
if(hFind == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, "INVALID_HANDLE_VALUE", "Failed", MB_OK | MB_ICONINFORMATION);
}
else
{
string file;
file = FindFileData.cFileName;
file.append("|");
MessageBox(NULL, file.c_str(), "YO", MB_OK | MB_ICONASTERISK); // string.c_str() to conv to LPCSTR
FindClose(hFind);
}
}
最后的 MessageBox 只是作为测试,稍后我将删除它。我目前正在学习 C++,这是一个初学者项目,所以我可以掌握它。
另外,字符串数据类型的大小是否有任何限制?谢谢。
【问题讨论】:
-
你是用windows作为操作系统吗?
-
您可以使用 std::string::max_size 查看 std 字符串的最大大小。
-
是的,Windows 7 64 位
-
这类问题一般都是通过递归来解决的。