[問題] 讀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