我有一个文件,其数据列表如下:
0, 2, 10 10, 8, 10 10, 10, 10 10, 16, 10 15, 10, 16 17, 10, 16
我希望能够输入文件并将其拆分为三个数组,在此过程中修剪所有多余的空格并将每个元素转换为整数.
出于某种原因,我无法在c ++中找到一种简单的方法.我唯一的成功就是将每一行输入到一个数组中,然后重新修整所有空格然后将其拆分.整个过程花了我很多20-30行代码,并且修改另一个分隔符(例如空格)等很难.
这是我希望在C++中使用的python:
f = open('input_hard.dat') lines = f.readlines() f.close() #declarations inint, inbase, outbase = [], [], [] #input parsing for line in lines: bits = string.split(line, ',') inint.append(int(bits[0].strip())) inbase.append(int(bits[1].strip())) outbase.append(int(bits[2].strip()))
在python中使用这种方法的难易程度是我首先转向它的原因之一.但是,我现在需要在C++中执行此操作,我不想使用我丑陋的20-30行代码.
任何帮助将不胜感激,谢谢!
在这个例子中没有真正需要使用boost,因为流可以很好地完成这个工作:
int main(int argc, char* argv[]) { ifstream file(argv[1]); const unsigned maxIgnore = 10; const int delim = ','; int x,y,z; vectorvecx, vecy, vecz; while (file) { file >> x; file.ignore(maxIgnore, delim); file >> y; file.ignore(maxIgnore, delim); file >> z; vecx.push_back(x); vecy.push_back(y); vecz.push_back(z); } }
虽然如果我打算使用boost我更喜欢tokenizer的简单性来正则表达式... :)