[问题] 读txt档中的阵列,想略过开头的"["

楼主: UCboy (游戏boy)   2015-04-24 17:48:21
开发平台(Platform): C++
问题(Question):
如标题,读txt档中的阵列存到阵列中
但一开始的"["第一个值连在一起,会让我第一个读的值变0
喂入的资料(Input):
txt档的内容如下
[108.684, 19.9082, 0.316327, 0.193878, 0.867347;
64.1389, 59.4167, 14.1111, 11.2222, 7.63889;
17.8065, 6.12345, 3.29032, 12.5161, 106.226]
预期的正确结果(Expected Output):
将所读的值正确的设给阵列model储存
108.684, 19.9082, 0.316327, 0.193878, 0.867347
64.1389, 59.4167, 14.1111, 11.2222, 7.63889
17.8065, 6.12345, 3.29032, 12.5161, 106.226
错误结果(Wrong Output):
矩阵中的其他元都正确,但就是第一元会变0
0, 19.9082, 0.316327, 0.193878, 0.867347
64.1389, 59.4167, 14.1111, 11.2222, 7.63889
17.8065, 6.12345, 3.29032, 12.5161, 106.226
程式码(Code):(请善用置底文网页, 记得排版)
Mat model = Mat::zeros(keyt, 128, CV_32F);
char opline[1000];
int col, row = 0;
fp.open("abc.txt", ios::in);
while (fp.getline(opline, 1000, ';')){
col = 0;
char *p1 = strtok(op_line, ","); // 以","为分隔号分割字串,
// 分割结果存入p1阵列
while (p1 != NULL) {
model.at<float>(row, col) = atof(p1); // model矩阵存取读值
col++;
p1 = strtok(NULL, ","); // 类似"进到阵列下一个元素"的概念
}
row++;
}
补充说明(Supplement):
我对指标不太熟悉
不然这问题,应该可以用我用的strtok函式就能解决
不过这问题应该很多人都很常遇到
想问一下有没有什么经典的漂亮解法?
先感谢各位大大了 <m(.)m>
作者: uranusjr (←這人是超級笨蛋)   2015-04-24 18:15:00
都用 C++ 了何苦写成这样
作者: EdisonX (卡卡兽)   2015-04-24 20:39:00
以下方法只适用这特例 , 比较 generial 还是要走字串分析atof(*p1) -> atof( *p1=='[' ? *p1 : *(p1+1) ) ;atof( p1) -> atof( *p1=='[' ? p1 : p1+1) ; 修正错误XD
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-24 20:46:00
直接op_line2++不就结了 何苦整列抄一遍
作者: lagunalai (神奇)   2015-04-24 21:08:00
How about "strtok (str," ,[]\n")" ?sorry, str 改成 opline以及 strtok (NULL," ,[]\n")
作者: Jimmy0301 (Jimmy)   2015-04-24 21:13:00
一开始读档不要读[就好啦
作者: TobyH4cker (Toby (我要当好人))   2015-04-24 21:57:00
看你问题一行就马上想到和MOON一样的答案。可见这年头大家对指标的理解还是不行
作者: suhorng ( )   2015-04-24 22:16:00
要不要直接在 fp.open 的下一行加个 fp.get()
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-25 13:13:00
strtok()的方法较好啦,谁知道[会跑到哪里虽然这看起来是一个JSON []如果出现在里面应该另做解释
作者: uranusjr (←這人是超級笨蛋)   2015-04-25 23:40:00
@MOONRAKER 不是 JSON 啦, 都有分号了
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-26 00:36:00
更居然有分号 X(
作者: loveme00835 (发箍)   2015-04-26 02:01:00
又是逗号又是分号的好乱阿~
作者: firejox (Tangent)   2015-04-28 00:21:00
不要有中括号吧? 那两个不是不同的阵列?

Links booklink

Contact Us: admin [ a t ] ucptt.com