C++中如何读取一个ini文件 20
是这样的格式:[Main]Color=0,255,200Type=5String=HelloImage=test\a.bmpSize=0.0,255.0,0.0Read=...
是这样的格式:
[Main]
Color=0, 255, 200
Type=5
String=Hello
Image=test\a.bmp
Size=0.0, 255.0, 0.0
Read=true
请问如何把这些读取到指定的变量中, 并且每个数据的第一个保存在变量的第一个元素里面,第二个保存在第二个元素里面?(要求能根据栏的标题,也就是"[Main]"进行读取,也就是说如果下面还有一个[Secondary], 但是只会读取我规定的栏)
例如,我要读取Main栏里面的Color数据,那么新建一个整型变量int iColor[3], 应该读取的就是iColor[0]=0, iColor[1]=255, iColor[2]=200
请大侠指教谢谢
对了 我是用的Visual Studio 2013,里面的fstream.h可能与VC++6.0不一样 展开
[Main]
Color=0, 255, 200
Type=5
String=Hello
Image=test\a.bmp
Size=0.0, 255.0, 0.0
Read=true
请问如何把这些读取到指定的变量中, 并且每个数据的第一个保存在变量的第一个元素里面,第二个保存在第二个元素里面?(要求能根据栏的标题,也就是"[Main]"进行读取,也就是说如果下面还有一个[Secondary], 但是只会读取我规定的栏)
例如,我要读取Main栏里面的Color数据,那么新建一个整型变量int iColor[3], 应该读取的就是iColor[0]=0, iColor[1]=255, iColor[2]=200
请大侠指教谢谢
对了 我是用的Visual Studio 2013,里面的fstream.h可能与VC++6.0不一样 展开
展开全部
文件内容实例
[net]
;应用服务器IP
AppSrvIp=10.123.15.108
;端口
LocalPort=21008
int ReadParam(char* path)//path 就是.ini文件的路径例如:c:\\abc.ini
{
//读取int类型 参数说明: 标签 ID 默认值 文件路径
int testInt = GetPrivateProfileInt("net", "LocalPort", 21008, path);
//读取字符串
char ltmp[1024] = {0};
char AppSrvIp[20] = {0};
memset(ltmp, 0, sizeof(ltmp));
GetPrivateProfileString("net", "AppSrvIp", "", ltmp, sizeof(ltmp), path);
strcpy(AppSrvIp, ltmp);
return 0;
}
[net]
;应用服务器IP
AppSrvIp=10.123.15.108
;端口
LocalPort=21008
int ReadParam(char* path)//path 就是.ini文件的路径例如:c:\\abc.ini
{
//读取int类型 参数说明: 标签 ID 默认值 文件路径
int testInt = GetPrivateProfileInt("net", "LocalPort", 21008, path);
//读取字符串
char ltmp[1024] = {0};
char AppSrvIp[20] = {0};
memset(ltmp, 0, sizeof(ltmp));
GetPrivateProfileString("net", "AppSrvIp", "", ltmp, sizeof(ltmp), path);
strcpy(AppSrvIp, ltmp);
return 0;
}
展开全部
我所在公司这是作为公司面试题,自己写方法来解析是不难的,但如果是为了省时间,使用现成的库就大把,现举例一个用boost property_tree 库, 假设文件是 config.ini
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ini_parser.hpp>
...
boost::property_tree::ptree pt;
boost::property_tree::ini_parser::read_ini("config.ini", pt);
std::cout << pt.get<std::string>("Main.Color") << std::endl;
std::cout << pt.get<int>("Main.Type") << std::endl;
std::cout << pt.get<std::string>("Main.String") << std::endl;
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ini_parser.hpp>
...
boost::property_tree::ptree pt;
boost::property_tree::ini_parser::read_ini("config.ini", pt);
std::cout << pt.get<std::string>("Main.Color") << std::endl;
std::cout << pt.get<int>("Main.Type") << std::endl;
std::cout << pt.get<std::string>("Main.String") << std::endl;
追问
这个头文件哪里有
追答
boost库啊,你用的什么系统?ubuntu,debian可以一行命令装完
apt-get install libboost-all-dev
如果没有就搜一下
apt-cache search libboost
其它系统去官网下,自己看帮助文档
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-04-29
展开全部
struct文本要知道结构体成员,TXT的自己看着办,还有一种INI库函数
追答
项少的话,直接用结构体,读写都方便
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询