我有一个源代码,它读取文本文件并存储到一个元组类型的向量中:
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <tuple>
#include <algorithm>
typedef std::vector<std::tuple<int, int, double>> VectorTuple;
VectorTuple Readfile(std::string filename)
{
std::ifstream File(filename);
if (!File.is_open())
{
std::cout << "File '" << filename << "' does not exist.";
exit(1);
}
VectorTuple data;
std::string line;
while (std::getline(File, line))
{
std::stringstream ss(line);
int a, b; double c;
if (ss >> a >> b >> c)
{
data.push_back(std::tuple<int, int, double>(a, b, c));
}
}
return data;
}
int main()
{
std::string file = "data.txt";
auto vt = Readfile(file);
for_each(vt.begin(), vt.end(), [](std::tuple<int, int, double> i){
std::cout << std::get<0>(i) << ", " << std::get<1>(i) << ", " << std::get<2>(i) << std::endl;
});
return 0;
}
data.txt
包含以下数据:
30000 | 49999 | 4
50000 | 119999 | 6.5
120000 | 279999 | 8
280000 | 499999 | 9
500000 | 999999 | 10
1000000 | 1999999 | 13
2000000 | 2499999 | 15
2500000 | 2999999 | 17.5
3000000 | 3499999 | 20
3500000 | 3999999 | 22.5
4000000 | 4499999 | 25
4500000 | 4999999 | 27.5
因此数据由空格+垂直线+空格(多重分隔符)分隔。
如何更改源代码以处理多个分隔符?
注意:如果数据仅用空格隔开,则程序可以工作。
您可以通过以下方式读取和丢弃:
std::stringstream ss(line);
int a, b; double c;
char s;
if (ss >> a >> s >> b >> s >> c)
{
data.push_back(std::tuple<int, int, double>(a, b, c));
}
问题内容: 我正在尝试读取以下形式的大文本文件: 我想在文本文件中将此字符串作为一个大的Java字符串读取。这可能吗?我知道使用split方法。 它可以逐行读取它,但我真正需要的是在“ +”号处分割此长文本字符串。之后,我想将其存储为数组,arraylist,列表,… 谁能帮我这个?因为互联网上的所有信息都只是逐行读取文件。提前致谢! 问题答案: 您可以使用或任何IO类读取文件。假设文件中包含该字
我有一个txt文件,数据如下所示 我在使用这段代码时读到了数据: 由于我的时间列,它不能正常工作,因为是通过逗号分隔的。我该如何解决这一点,如何使它工作,即使在我有多列这样的时间格式的情况下? 我想获得一个如下所示的数据帧: 多谢!
我有以下模式: 在第一分隔符中,可以没有开始的圆括号、数字的组合和结束的圆括号。但是,数字和闭括号的组合是存在的,如果有开括号的话。 第二个分隔符从文本的第一列开始,它是该行唯一的单词。 我的正则表达式: 请帮帮我.
问题内容: 我尝试将文件读入熊猫。该文件具有以空格分隔的值,但是我尝试使用不同数量的空格: 但这不起作用 问题答案: 添加参数,它比正则表达式更快。
问题内容: 我有一些看起来像这样的数据: 我想将其导入3列数据框,例如 我一直试图读取数据,因为2列在’:’上分割,然后在’‘上分割了第一列。但是我发现它令人讨厌。是否有更好的方法可以直接在导入时对其进行分类? 目前: 但是,由于我的数据处于领先地位,这使情况更加复杂。 我觉得这应该是一个简单的任务,但是目前我正在考虑逐行读取它,并在导入之前使用一些find replace清理数据。 问题答案: