如何读取文件内容获取其中的关键字

2024-01-09 17:25:07

通过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;

}

文章来源:https://blog.csdn.net/weixin_41028555/article/details/135375086
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。