我一直试图在不同的行上显示2行6列。我尝试过不同的方法,但似乎都没有用。这就是我现在拥有的:
void Travel::LoadDest()
{
ifstream file("worlddeals.txt");
vector<vector<string>>data;
if (file) {
string line;
while (getline(file, line)) {
data.push_back(vector<string>());
stringstream split(line);
string value;
while (split >> value)
data.back().push_back(value);
}
}
for (int i = 0; i < data.size(); i++) {
for (int j = 0; j < data[i].size(); j++)
cout << data[i][j] << endl;
cout << '\n';
}
}在我的.txt中有:
科孚Tab 5* Gelina村水上公园Tab 2017年5月21日Tab Luton Tab 10夜Tab Holguin Tab 5* Paradisus Rio De Oro Tab 2017年5月22日Tab曼彻斯特Tab 10夜Tab
我想要输出的是:
科孚 住宿: 5* Gelina村水上公园 启程日期:2017年5月21日 离境机场:卢顿 持续时间: 10晚 董事会基础:所有包括在内
霍尔金 住宿: 5* Paradisus Rio De OroStar 启程日期:2017年5月22日 出发机场:曼彻斯特 持续时间: 10晚 董事会基础:所有包括在内
发布于 2017-04-09 00:02:54
你说它不适合你,但我只是尝试了我用你的输入数据链接的代码,它输出了你想要的东西。我没有打印字段名,但下面是根据您的规范解析的行:
#include <iostream>
#include <sstream>
void print_tab_delimited_fields(const std::string &input)
{
std::istringstream ss(input);
std::string token;
while (std::getline(ss, token, '\t')) {
std::cout << token << '\n';
}
}
int main()
{
std::string line1 = "Corfu\t5 * Gelina Village Waterpark\t21 May 2017\tLuton\t10 nights\tAll Inclusive";
print_tab_delimited_fields(line1);
std::string line2 = "Holguin\t5 * Paradisus Rio De Oro\t22 May 2017\tManchester\t10 nights\tAll Inclusive";
print_tab_delimited_fields(line2);
}输出
Corfu
5 * Gelina Village Waterpark
21 May 2017
Luton
10 nights
All Inclusive
Holguin
5 * Paradisus Rio De Oro
22 May 2017
Manchester
10 nights
All Inclusive将结果推送到向量,或者与字段标签一起打印结果,这将是一个很小的改变,因为数据文件已经被假定有这些精确的字段的精确顺序。
https://stackoverflow.com/questions/43295890
复制相似问题