gpt4 book ai didi

c++ - 如何将文件读入元组 vector ?

转载 作者:行者123 更新时间:2023-12-01 23:29:29 25 4
gpt4 key购买 nike

我想读取一个文本文件,其中包含以下数据:

Wogger John 2   6.2
Bilbo 111 81.3
Mary 29 154.8

由制表符分隔的数据。问题是如果字符串包含空格(例如:'Wogger John'),则程序无法运行。如果我将字符串“Wogger John”替换为“Wogger”或“John”,程序就可以正常工作。如何解决这个问题?如何使用 getline() 函数。这里的代码:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cerrno>
#include <cstring>
#include <tuple>

std::vector<std::tuple<std::string, int, double>> Readfile()
{
std::ifstream File("file_read_v3.txt");
std::vector<std::tuple<std::string, int, double>> data;
std::string name;
int a;
double b;

while (File >> name >> a >> b)
{

data.push_back(std::tuple<std::string, int, double>(name, a, b));
}
return data;
}

int main()
{
auto vt = Readfile();

for (const auto& i : vt) {
std::cout << std::get<0>(i) << ", " << std::get<1>(i) << ", " << std::get<2>(i) << std::endl;
}

return 0;
system("pause");
}

最佳答案

while (std::getline(File, name, '\t') >> a >> b)
{
data.push_back(std::tuple<std::string, int, double>(name, a, b));
}

std::getline 读取并包含一个定界符,然后丢弃该定界符。它默认的分隔符是一个换行符;在这里,我们将其设为标签。

关于c++ - 如何将文件读入元组 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66552813/

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