__读ini文件中的数值问题__???
我的ini文件里面存的是TRect类型用","号分开的值,如80,20,160,60然后是怎么在程序里面很方便的读出,转换成TRect类型,我现在是先读出字符串,然后再把字符串中的数字判断","号分别提取出来,但是这样做效率太低了,还请DX们救我! 问题点数:0、回复次数:15Top
1 楼F117p(走两步,你走两步?)回复于 2005-06-04 18:06:45 得分 0
不明白,为什么不直接用ReadInteger和WriteInteger?Top
2 楼kingeboy(㊣周傳雄㊣)回复于 2005-06-04 19:09:11 得分 0
不行我的值存的格式是
rc=80,20,160,60
这样的
如果换成就太多值了
rcL=80
rcT=20
rcR=160
rcB=60
我有好多个这样的TRect结构要存暂时用的是把值当做字符串读出来在用一个函数把字符串分段转换成int然后在赋给TRect结构.Top
3 楼xpdavis(咕嘟-不想孤独)回复于 2005-06-04 19:22:24 得分 0
int i[4];
AnsiString str = "80,20,160,60";
str.scanf("%d,%d,%d,%d", i, &i[1], &i[2], &i[3]);Top
4 楼kese(可可)回复于 2005-06-04 19:26:53 得分 0
你可以利用分隔符(,)将字符串分割然后AnsiString::ToInt()
楼主这个问题应该自己解决,而且像这样的东西放在配置文件中是不合理的Top
5 楼F117p(走两步,你走两步?)回复于 2005-06-04 22:53:00 得分 0
没试过
给你参考:考虑用一种算法,将4个数经过某个算法后得到一个数。
然后在读取的时候再逆算法,还原出来。
如可以:a,b,c,d x=1*a+10*b+100*c+1000*dTop
6 楼kingeboy(㊣周傳雄㊣)回复于 2005-06-06 10:40:19 得分 0
回 xpdavis(咕嘟)
scanf不是AnsiString类型的成员函数啊
我现在就是用","号分割读取的,就想有没有好用的方法Top
7 楼gxd305()回复于 2005-06-06 13:19:49 得分 0
学学 流
诸如
istream
ostream
iostream
fstream
stringstream
之类的东西
就可以如
xpdavis(咕嘟)
所用的方法了Top
8 楼xpdavis(咕嘟-不想孤独)回复于 2005-06-06 13:40:54 得分 0
int i[4];
AnsiString str = "80,20,160,60";
sscanf(str.c_str(), "%d,%d,%d,%d", i, &i[1], &i[2], &i[3]);
Top
9 楼kese(可可)回复于 2005-06-06 14:48:25 得分 0
xpdavis(咕嘟) 兄弟的方法很好。只是希望给出一个能在windows中运行的代码,而不是在dos下运行的。
期待你解决这个问题。
Top
10 楼cczlp(不惑)回复于 2005-06-06 15:03:09 得分 0
xpdavis(咕嘟)的方法
int i[4];
AnsiString str = "80,20,160,60";
sscanf(str.c_str(), "%d,%d,%d,%d", i, &i[1], &i[2], &i[3]);
是在windows下用的.
别忘了加上#include <stdio.h>
Top
11 楼kese(可可)回复于 2005-06-06 15:06:22 得分 0
我的意思是在窗口中运行,而不是控制台中Top
12 楼titan_ysl(泰坦)回复于 2005-06-06 15:15:33 得分 0
我一般是直接把数据封在结构里存盘,一来存取方便,二来用户也不容易任意修改。Top
13 楼kingeboy(㊣周傳雄㊣)回复于 2005-06-07 10:01:50 得分 0
回 xpdavis(咕嘟)
你的方法很好用谢谢了!Top
14 楼xpdavis(咕嘟-不想孤独)回复于 2005-06-07 10:04:07 得分 0
回复人: kese(可可) ( ) 信誉:100 2005-06-06 15:06:00 得分: 0
我的意思是在窗口中运行,而不是控制台中
sscanf和scanf是有区别的,sscanf可以在窗口(图形界面)中使用Top
15 楼kese(可可)回复于 2005-06-07 11:19:04 得分 0
谢谢!我又学了一招。Top




