作者legnaleurc (CA)
看板C_and_CPP
标题Re: [问题] C++读取.txt档 <--以";"分隔出的数据
时间Thu Dec 10 18:38:28 2009
※ 引述《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
1F:→ ricky0909193:非常感谢您的提示,我会再试试看的^^ 12/10 19:56