gpt4 book ai didi

c++ - 读取目录中的文件 C++

转载 作者:行者123 更新时间:2023-11-28 02:20:16 24 4
gpt4 key购买 nike

我正在读取目录中的文件并将其传递给一个函数,我认为我以错误的方式进行操作,无法弄清楚。

这是我的代码,首先它读取文件夹中的文件并将其发送到函数以进行进一步操作。

#include <dirent.h>
#include <stdio.h>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
std::vector<std::string> fileName;


int main(void)
{

DIR *d;
struct dirent *dir;
vector<string> fileList;
int i=0;
d = opendir("files");
if (d)
{
while ((dir = readdir(d)) != NULL)
{
i++;
fileList.push_back(dir->d_name);

}
for(int i=0;i<fileList.size();i++) {
cout<<fileList[i]<<endl;
doSomething(fileList[i]);
}
closedir(d);
}

return(0);
}

int doSomething(fileName) {
//do something
}

错误

main.cpp: In function ‘int main()’:
main.cpp:29:28: error: ‘doSomething’ was not declared in this scope
doSomething(fileList[i]);
^
main.cpp: At global scope:
main.cpp:37:26: error: cannot convert ‘std::vector<std::basic_string<char> >’ to ‘int’ in initialization
int doSomething(fileName) {
^
main.cpp:37:28: error: expected ‘,’ or ‘;’ before ‘{’ token
int doSomething(fileName) {
^

最佳答案

由于您的 doSomething 函数是在 main 之后定义的,因此它是不可见的,这会导致第一个错误。正确的方法是至少先声明函数:

int doSomething(); //declaration

int main()
{
doSomething(); //now the function is declared
}

//definition
int doSomething()
{
}

现在,出现第二个和第三个错误是因为您没有在函数定义中包含 fileName 参数的类型。根据您的代码,它应该是一个字符串:

int doSomething(string fileName)
{
}

我还注意到,虽然此函数返回 int,但您并未使用它的返回值。尽管如此,不要忘记从 doSomething返回 一些东西,否则会导致未定义的行为。

关于c++ - 读取目录中的文件 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32795798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com