gpt4 book ai didi

c++ - 从文本文件 C++ 中读取多个变量类型

转载 作者:行者123 更新时间:2023-11-28 05:41:28 24 4
gpt4 key购买 nike

我正试图从一个看起来像这样的文本文件中读取

bend 6 7
fairbanks 3 5

并逐行重复。内容总是相同的格式,所以字符串,然后是 int,然后是 int。

我正在尝试使用 stringstream 获取文件的每一行,然后将其与那里分开。但是,它似乎根本没有阅读任何内容。这是我目前的尝试:

ifstream infile;
string line, cityName;
int xCoor, yCoor;
City* temp;

infile.open(filename);
while(getline(infile, line))
{
istringstream iss(line, istringstream::in);

iss >> cityName;
while(iss >> xCoor >> yCoor)
{
temp = new City(cityName, xCoor, yCoor);
addCity(temp);
}
}

向该函数传递一个文件名并收集城市名称及其 x 和 y 坐标,创建一个新的 City 对象,然后将该城市添加到一个 vector 中。

我是在滥用 stringstream 还是它不是解决这个问题的好方法?

编辑:

这是 map 类

class Map {
friend class City;
private:
std::vector<City*> graph;
void addCity(City* c) { graph.push_back(c); }
City* findByNamePrivate(std::string cityName);
public:
Map(std::string filename);
City* findByName(std::string cityName) { return findByNamePrivate(cityName); }
};

Map 的构造函数是我遇到的问题。

我以为我也包括了这个,但我想没有。

City* Map::findByNamePrivate(string cityName)
{
for(int i = 0; i < graph.size(); i++)
{
if(graph[i]->getName() == cityName)
{
return graph[i];
}
}
}

在别处调用这一行时程序失败

assert(map.findByName("bend") != NULL);

最佳答案

如果你写“内容总是相同的格式,所以字符串,然后是 int,然后是 int”,我不明白你为什么要使用循环 while(iss>>xCoord >> yCoord)。对于您的格式,您可以简化阅读过程:

while(infile >> cityName >> xCoor >> yCoor ) {
addCity(new City(cityName, xCoor, yCoor));
}

关于c++ - 从文本文件 C++ 中读取多个变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37011130/

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