我想将每一行插入到矢量中。
我的文件如下:
问题是在getline中使用多个分隔符。 我的代码如下所示:
vector<int>czytajplik()
{
string line;
vector<string> text;
ifstream mojplik;
vector<vector<int>> zajecia;
mojplik.open("dane.txt");
if (mojplik.is_open())
{
while (getline(mojplik, line))
{
while (getline(mojplik, line, ' '))
{
text.push_back(line);
}
}
mojplik.close();
}
else cout << "Unable to open file" << endl;
vector<int> textnumery;
for (int i = 0; i <text.size(); i++)
{
int num = atoi(text.at(i).c_str());
textnumery.push_back(num);
}
return textnumery;
}
答案 0 :(得分:1)
我将假设您的数据类似于
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
并希望将2d向量等于
vector<vector<int>> result = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 } };
然后你想要像
这样的东西vector<vector<int>> zajecia;
ifstream mojplik("dane.txt");
if (mojplik.is_open())
{
for (string line; getline(mojplik, line); )
{
stringstream numbers_stream(line);
vector<int> numbers;
for (int number; numbers_stream >> number; )
{
numbers.push_back(number);
}
zajecia.push_back(numbers);
}
mojplik.close();
}
答案 1 :(得分:0)
我认为这就是你的要求:
std::ifstream mojplik{"dane.txt"};
if (mojplik.is_open()) {
std::vector<std::vector<int>> numbersLines{};
for (std::string line; getline(mojplik, line);) {
std::vector<int> numbersLine{};
std::istringstream is(line);
int num;
while (is >> num) {
numbersLine.push_back(num);
}
numbersLines.push_back(numbersLine);
}
mojplik.close();
}