首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用来自文件的输入创建变量

使用来自文件的输入创建变量
EN

Stack Overflow用户
提问于 2013-05-27 09:40:34
回答 2查看 99关注 0票数 0

我希望有人能帮助我。

我有一个文件,其中包含许多可以重复的城市列表。例如:

代码语言:javascript
复制
Lima, Peru

Rome, Italy

Madrid, Spain

Lima, Peru

我已经创建了一个带有构造器City( string cityName )的类City

大体上,我想为每个城市创建一个指针,比如:

代码语言:javascript
复制
City* lima = new City( City("Lima, Peru"); 

City* rome = new City( City("Rome, Italy");

有没有一种方法可以通过循环读取文本中的行来实现这一点,比如:

代码语言:javascript
复制
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);   
}

有没有办法,或者我必须手动完成每一个。有什么建议吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-05-27 10:08:46

因为您只想列出一次城市,但它们可能会在文件中出现多次,所以使用setunordered_set以便只在第一次插入时才起作用是有意义的。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-05-27 09:44:50

您应该使用City对象的std::vector来存储实例。对于这种情况,getline应该足够了:

代码语言:javascript
复制
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));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16765356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档