为什么函数外部的数组不保留任何值?

时间:2017-03-22 02:40:52

标签: c++ arrays function

我正在尝试创建一个程序,从文件中读取文本并搜索某些单词,然后我从那里处理。我正在使用数组存储我想要的数据但是当我尝试访问函数外部的数组时,只有数组中的第一个点被占用,并且它是函数读取的最后一个值。当然代码是不完整的,但我需要知道,是什么导致了这个?

#include<iostream>
#include<string>
#include<fstream>

using std::cout; using std::cin; using std::endl; using std::string; 
using std::ifstream; using std::getline;

string data, strL = "language", strC = "created", strT = "timestamp";
string lang[2], date[2];
int count = 0, l = 0, c = 0;
ifstream rawData("testsample.txt");

void search(int count, string data, string heading) {
int x, y;
if (data.find(heading) != string::npos) {
    //cout << heading << endl;
    if (heading == strL) {
        x = 4; y = 2;
        lang[count] = data.substr(data.find(strL) + strL.length() + x, y);
        //cout << lang[count] << endl;
    }
    if (heading == strC) {
        x = 4; y = 29;
        date[count] = data.substr(data.find(strC) + strC.length() + x, y);
    }
}
count++;
}

int main() {
while (getline(rawData, data)) {
    search(l, data, strL);
    search(c, data, strC);
    //count++;
}cout << lang[0] << " " << lang[1] << endl;
cout << date[1];

return 0;
}    

1 个答案:

答案 0 :(得分:0)

我认为您的问题在于您拥有全局变量count,以及search函数count的参数。 count++函数中的search语句会增加参数,而不是全局参数。由于此函数中没有循环,因此您分配给langdate的索引始终为零。

删除参数可能会导致代码执行您想要的操作,但是,如果您处理的代码超过两个,则会溢出。您可以考虑使用std::vector或其他动态调整容器类。