我希望有人可以帮助我。
我有一个文件,其中列出了许多可以重复的城市。例如:
Lima, Peru
Rome, Italy
Madrid, Spain
Lima, Peru
我创建了一个带有构造函数City(string cityName)
的类City在主要内容中,我想为每个城市创建一个指针,如:
City* lima = new City( City("Lima, Peru");
City* rome = new City( City("Rome, Italy");
有没有办法通过循环读取文本中的行来执行此操作,如:
City* cities = new City[];
int i = 0;
while( Not end of the file )
{
if( read line from the file hasn't been read before )
cities[i] = City(read line from the file);
}
有没有办法,或者我必须手动为每一个办法。有什么建议?
由于
答案 0 :(得分:1)
因为您只想列出一次城市,但它们可能在文件中多次出现,所以使用set
或unordered_set
是有意义的,这样插入只能在第一次使用...
std::set<City> cities;
if (std::ifstream in("cities.txt"))
for (std::string line; getline(in, line); )
cities.insert(City(line)); // fails if city already known - who cares?
else
std::cerr << "unable to open input file\n";
答案 1 :(得分:0)
您应该使用std::vector
个City
个对象来存储实例。并且getline
应该足以满足这种情况:
std::vector<City> v;
std::fstream out("out.txt"); // your txt file
for (std::string str; std::getline(out, str);)
{
v.push_back(City(str));
}