gpt4 book ai didi

c++ - 从文本文件中读取具有不同分隔符的行和列

转载 作者:行者123 更新时间:2023-11-28 07:25:10 25 4
gpt4 key购买 nike

我正在尝试编写一个从文本文件中读取单独行的函数。每行有两列或三列。我想知道最优雅/干净的方法。我需要使用不同分隔符的函数 (\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;
}
}

概述:

  1. 问题:不同的分隔符。

  2. Others elegantes solutions:一般来说,有人对问题有其他优雅/干净的解决方案吗?

最佳答案

您可以使用 boost split它可以在您可以指定的多个分隔符上拆分字符串。

std::string = line;
std::vector<std::string> parts;

boost::split(parts, line, boost::is_any_of("\t\n,; "));

关于c++ - 从文本文件中读取具有不同分隔符的行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18877174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com