通过ifstream去读取文件
本文件最后一行的内容是:{ tag1:3, tag2:1},最终是找到3这个值并将它转为int值
void stringSplit(string str, char split,vector<string>& res) {
? ? istringstream streamString(str);
? ? string token;
? ? while (getline(streamString, token, split))
? ? {
? ? ? ? //将token存入res
? ? ? ? res.push_back(token);
? ? }
}
int readfile(string fileName) {
? ? //打开文件流,文件名为:fileName
? ? ifstream file(fileName);
? ? //如果无法打开此文件,return
? ? if (!file.is_open()) {
? ? ? ? ALOGD("getMaxTag: Can not open file!");
? ? ? ? return -1;
? ? }
? ? char ch;
? ? std::string firstLine;
? ? std::getline(file, fitstLine);
? ? ALOGD("file first?line = %s", firstLine.c_str());
? ? file.close();
? ? if (firstLine?== "") {
? ? ? ? return 0;
? ? }
? ? long index = 0;
? ? //format as bellow:
? ? //{ tag1:3, tag2:1}
? ? //格式加入是上面这种
? ? vector<string> splitLastLine;
? ? //以:分割字符串,分割后的分别存到splitLastLine,会被分割成“tag1", "3, tag2", "1"
? ? stringSplit(lastLine, ':', splitLastLine);
? ? vector<string> splitLastLineTag;
? ? //以,分割字符串splitLastLine[1]
? ? stringSplit(splitLastLine[1], ',', splitLastLineTag);
? ? string indexMax = splitLastLineTag[0];
? ? char* endptr;
? ? //将string转成long
? ? long num = strtol(indexMax.c_str(), &endptr, 10);
? ? if (*endptr != '\0') {
? ? ? ? ALOGD("getMaxTag: Change failed!");
? ? ? ? return -1;
? ? } else {
? ? ? ? index = num;
? ? }
? ? ALOGD("max index = %ld", index);
? ? return index;
}