Re: [問題] C++讀取.txt檔 <--以";"分隔出的數據
※ 引述《ricky0909193 (小鬥魚)》之銘言:
: 使用dev C++
: 小弟最近作研究要分析數據的時候,遇到一個問題。
: 有一個.dat檔的數據堆,我可以用記事本開啟,也可以使用fstream去讀取內容
: 例如:
: 1.327896921123;2.4433212324;1.32546442;2.3122554
: 1.43121543525;1.5325436343;3.235443262;4.31232143
: .
: .
: .
: .
: 類似的數據若可讀取到陣列裡的話大概是 double[700][10]
: 我找了一下以前大家問過的問題,大多都是讀取空白,tab鍵,或是字串,
: 看各位前輩們回答的推文裡也都沒有提到該如何讀取以 ";"區隔開的數字
: 誠心請問有經驗的前輩們,我該如何解決這個問題呢?
: 謝謝。
ifstream fin( /* ... */ );
std::string line;
while( std::getline( fin, line ) ) {
/* from #include<sstream> */
std::istringstream sin( line );
while( std::getline( sin, line, ';' ) ) {
/* blah blah */
}
}
其實還有滿多方法的
如果希望少一道 string to double 的手續的話
囧一點的就是把所有的 ';' 換成 ' '
/* from #include<algorithm> */
std::replace( line.begin(), line.end(), ';', ' ' );
std::istringstream sin( line );
double tmp;
while( sin >> tmp ) {
/* blah blah */
}
如果很確定每行有幾個有效資料的話
也可以塞 dummy input:
fin >> double1 >> charDummy >> double 2 >> charDummy;
不過要是輸入格式跑掉的話會失敗
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.205.248.119
→
12/10 19:56, , 1F
12/10 19:56, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):