如何每 3 行将元素添加到成对的向量中?
How to add elements to a vector of pairs every 3rd line?
我正在尝试从看起来像这样的文本制作成对向量:
第 1 行
第 2 行
第 3 行
向量将包含一对 line1
和 line2
。
另一个向量将包含 line1
和 line3
通常我会像这样向矢量添加线条
vector<string> vector_of_text;
string line_of_text;
ifstream test_file("test.txt");
if(test_file.is_open()){
while(getline(test_file, line_of_text)){
vector_of_text.push_back(line_of_text)
}
test_file.close();
}
但我不知道是否可以使用 getline
命令访问下一行文本。
例如,在数组中,我会对下一个或第三个元素执行 i+1
或 i+2
。
我想知道是否有办法用 getline
.
做到这一点
如果我没看错的话,你要两个vector<pair<string, string>>
。
这可能是一种方式:
// an array of two vectors of pairs of strings
std::array<std::vector<std::pair<std::string, std::string>>, 2> tw;
unsigned idx = 0;
std::string one, two, three;
// read three lines
while(std::getline(file, one) &&
std::getline(file, two) &&
std::getline(file, three))
{
// put them in the vector pointed out by `idx`
tw[idx].emplace_back(one, two);
tw[idx].emplace_back(one, three);
// idx will go 0, 1, 0, 1, 0, 1 ... until you can't read three lines anymore
idx = (idx + 1) % 2;
}
我正在尝试从看起来像这样的文本制作成对向量:
第 1 行
第 2 行
第 3 行
向量将包含一对 line1
和 line2
。
另一个向量将包含 line1
和 line3
通常我会像这样向矢量添加线条
vector<string> vector_of_text;
string line_of_text;
ifstream test_file("test.txt");
if(test_file.is_open()){
while(getline(test_file, line_of_text)){
vector_of_text.push_back(line_of_text)
}
test_file.close();
}
但我不知道是否可以使用 getline
命令访问下一行文本。
例如,在数组中,我会对下一个或第三个元素执行 i+1
或 i+2
。
我想知道是否有办法用 getline
.
如果我没看错的话,你要两个vector<pair<string, string>>
。
这可能是一种方式:
// an array of two vectors of pairs of strings
std::array<std::vector<std::pair<std::string, std::string>>, 2> tw;
unsigned idx = 0;
std::string one, two, three;
// read three lines
while(std::getline(file, one) &&
std::getline(file, two) &&
std::getline(file, three))
{
// put them in the vector pointed out by `idx`
tw[idx].emplace_back(one, two);
tw[idx].emplace_back(one, three);
// idx will go 0, 1, 0, 1, 0, 1 ... until you can't read three lines anymore
idx = (idx + 1) % 2;
}