/*
*parameter: cfgfilepath 文件的绝对路径名如: /user/home/my.cfg
* key 文本中的变量名
* value 对应变量的值,用于保存
*
*/
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
static bool readConfigFile(const char * cfgfilepath, const string & key, string & value)
{
fstream cfgFile;
cfgFile.open(cfgfilepath);//打开文件
if (!cfgFile.is_open())
{
cout << "can not open cfg file!" << endl;
return false;
}
char tmp[1000];
while (!cfgFile.eof())//循环读取每一行
{
cfgFile.getline(tmp, 1000);//每行读取前1000个字符,1000个应该足够了
string line(tmp);
size_t pos = line.find('=');//找到每行的“=”号位置,之前是key之后是value
if (pos == string::npos) continue;
string tmpKey = line.substr(0, pos);//取=号之前
if (key == tmpKey)
{
value = line.substr(pos + 1);//取=号之后
return true;
}
}
return false;
}
int main() {
string value;
readConfigFile("F:/test1.txt", "name", value);
cout << value << endl;
system("pause");
return 0;
}
文件中存在中文时输出结果是乱码:
编码格式默认是UTF-8格式,不支持汉字编码。因此在保存txt文本文件时,改变编码格式,将默认的UTF-8改成ANSI即可。
文本内容
输出结果: