我写了一些代码,程序从文件中读取信息(这里是文件)
5
Franks,Tom 2 3 8 3 6 3 5
Gates,Bill 8 8 3 0 8 2 0
Jordan,Michael 9 10 4 7 0 0 0
Bush,George 5 6 5 6 5 6 5
Heinke,Lonnie 7 3 8 7 2 5 7
并将其放入两个数组中。一个用于名称,一个用于数字。然后总计数字并将其存储在数据数组中。现在我需要将所有数组更改为Vectors,我对如何做到这一点很困惑。我知道我需要使用push_back,但我对如何开始感到困惑。
这是包含数组的代码:
int data[50][8];
string names[50];
int const TTL_HRS = 7;
ifstream fin;
fin.open("empdata.txt");
if (fin.fail()) {
cout << "ERROR";
}
int sum = 0;
int numOfNames;
fin >> numOfNames;
for (int i = 0; i < numOfNames; i++) {
fin >> names[i];
data[i][7] = 0;
for (int j = 0; j < 7; j++) {
fin >> data[i][j];
data[i][TTL_HRS] += data[i][j];
}
}
fin.close();
return numOfNames;
}
我知道我必须制作数组向量。所以我会
vector<vector<int>>data;
和
vector<string>names;
但我不确定如何填写它们。
答案 0 :(得分:0)
您可以使用getNews().from()
.flatmap(new Func1<1stResponseItem, 2dnResponseItem>() {
@Override
public 2dnResponseItem call(1stResponseItem response) {
return getNewsImage(response.getImageUrl());
}
})
.tolist()
方法逐个添加元素。
顺便说一下,我很好奇,为什么你想要向量而不是数组呢?
例如,对于字符串向量,您可以按
更改.push_back()
fin >> names[i];
可能(可能)有更好的方法可以做到这一点,但这就是我的看法。
答案 1 :(得分:0)
看起来很不合适。但我建议你使用与C-array类似的C ++ 11结构std::array。对于小型和固定大小的数据(如您的样本),它比std :: vector more efficient。
答案 2 :(得分:0)
我假设.txt
文件有这个:
Franks Tom 2 3 8 3 6 3 5
解决您问题的基本解决方案。
int main(int argc, const char * argv[]) {
vector <int> numbers;
vector <string> names;
string line, name1, name2;
int num[7];
ifstream fin("/empdata.txt");
if (!fin.is_open()) {
cout << "ERROR";
}
else{
while(getline(fin, line)){
istringstream is(line);
is >> name1;
is >> name2;
for(int i=0; i<7; i++){
is >> num[i];
}
names.push_back(name1);
names.push_back(name2);
for(int i=0; i<7 ; i++){
numbers.push_back(num[i]);
}
}
fin.close();
}
//Printing what did you read from a file
string allNames;
for(auto it = names.begin(); it < names.end(); it++){
allNames += (*it) + "\t";
}
cout << allNames << endl;
for (auto it = numbers.begin(); it < numbers.end(); it ++){
cout << (*it) << "\t";
}
return 0;
}