我正在尝试编写一个从文本文件中读取单行的函数。每行有两列或三列。我想知道最优雅/干净的方法。我需要使用不同分隔符的功能(\t,\n,' ',',',';')
。
我的方法工作正常,除了不同的分隔符。
例如输入:
6
0 0
1 1
2 2
3 3
4 4
5 5
10
0 1 0.47
2 0 0.67
3 0 0.98
4 0 0.12
2 1 0.94
3 1 0.05
4 1 0.22
3 2 0.24
4 2 0.36
4 3 0.69
模式输入:
[total number of vertices]
[id-vertex][\separetor][name-vertex]
...
[total number of edges]
[id-vertex][\separator][id-neighbor][\separetor][weight]
...
*\separetor=\t|\n|' '|','|';'
我的做法:
void readStream(istream& is, const char separator) {
uint n, m;
is >> n;
cout << n << endl;
string name;
uint vertexId, neighborId;
float weight;
while(!is.eof()) {
for(uint i = 0; i < n; i++) {
is >> vertexId >> name;
cout << vertexId;
cout << " " << name << endl;
}
is >> m;
cout << m << endl;
for(uint j = 0; j < n; j++) {
is >> vertexId >> neighborId >> weight;
cout << vertexId;
cout << " " << neighborId;
cout << " " << weight << endl;
}
break;
}
}
概述:
问题:不同的分隔符。
其他优雅的解决方案:一般来说,有人对这个问题有其他优雅/干净的解决方案吗?