如何使用数组作为搜索词搜索文件



我试图解析一个csv文件,并对其进行搜索,以找到与随机生成的数组匹配的值。

我尝试了一些方法,但我迷路了,我需要访问整个文件,搜索这些值并输出它所属的索引列。

我的随机数组生成器的代码以及我的搜索csv函数:

编辑:

编辑代码以使其可复制,并添加注释,希望这符合标准(显然除了给定的csv文件(。

可复制示例:

#include <fstream>
#include <iostream>
#include <string>
#include <random>
using namespace std;

//fills array of size 6 with random numbers between 1-50
void random_array(int arr[]){

for(int i=0;i<6;i++)
{
int num = rand()%51;
arr[i]=num;
}
}
int main(){
string line;
fstream file;

int size = 6;
int numbers[size];
int found;
//gets random array from random_array func
srand(time(NULL));
random_array(numbers);
//opens file to search
file.open("CSV directory here");
if(file.is_open())
{
//print random array values
for(int i = 0; i < size; i++){
cout << numbers[i]<< " ";}
cout << endl;

//get file contents and search if contents of array exist in file
while(getline(file, line)){

for(int i = 0; i < size; i++){
found = line.find(std::to_string(numbers[i]));
if(found != string::npos) {
//print found numbers
cout << found << " ";
}
}
}

}
return 0;
} 

CSV格式:

,Date,1,2,3,4,5,6,7
0,Wed 03 January 2001,5,6,16,17,19,22,40
1,Sat 06 January 2001,6,16,23,34,35,40,37

我的输出:

生成的数组:

35 35 38 37 16 31

找到的数字:

26 33 33 39 24 31 34 33 24 6 28 31 33 33 30 0 32 34 33 30 27 38 26 2929 33 7 24 29 26 26 24 0 30 30 36 0 23 27 0 7 36 27 3027 27 26 26 32 29 23 38 32 28 28 7 25 29 37 25 29 26 23 34 31 2825 31 28 28 34 32 35 38 40 25 37 37 35 40 30 42 42 36 3528 31 25 37 7 27 36 33 33 29 39 35 34 40 43 31

我建议更详细地查看find函数。它的重载都不包含整数,最接近的匹配(也是将要使用的匹配(包含char。。。所以它不会寻找像";12〃;它将寻找具有值12的字符。

您需要首先将数字转换为字符串。一个简单的修改是:

for ( int i = 0; i < 6; i++ ) {
if( (offset = line.find( std::to_string( numbers[i] ) ) ) != string::npos ) {
//do something
}
}

相关内容

  • 没有找到相关文章

最新更新