我正在读取目录中的文件并将其传递给一个函数,我想我是以错误的方式进行的,无法弄清楚。
这是我的代码首先它读取文件夹中的文件并将其发送到函数以进行进一步操作。
#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) {
^
答案 0 :(得分:1)
由于您的0.33
0.48
1.03
1.18
1.33
1.48
2.03
2.18
函数在main之后定义,因此不可见,导致第一个错误。正确的方法是至少先声明函数:
doSomething
现在,由于您未在函数定义中包含int doSomething(); //declaration
int main()
{
doSomething(); //now the function is declared
}
//definition
int doSomething()
{
}
参数类型,因此会出现第二个和第三个错误。根据您的代码,它应该是一个字符串:
fileName
我还注意到,虽然此函数返回int doSomething(string fileName)
{
}
,但您没有使用它返回的值。不过,请不要忘记int
来自return
的内容,否则会导致未定义的行为。
答案 1 :(得分:1)
是的,Boost很棒,但有点臃肿。因此,只是为了完整性应用于读取OpenCV目录中的图像:
let values = Calendar.current.dateComponents([Calendar.Component.month, Calendar.Component.year], from: self.calendar.currentPage)
CURRENT_YEAR = values.year
CURRENT_MONTH = values.month
let range = Calendar.current.range(of: Calendar.Component.day, in: Calendar.Component.month, for: self.calendar.currentPage)
TOTAL_DAYS = range.count