C++ 使用文件输入创建变量
我希望有人能帮助我 我有一个文件,里面有很多可以重复的城市。例如:C++ 使用文件输入创建变量,c++,class,visual-c++,pointers,variable-assignment,C++,Class,Visual C++,Pointers,Variable Assignment,我希望有人能帮助我 我有一个文件,里面有很多可以重复的城市。例如: Lima, Peru Rome, Italy Madrid, Spain Lima, Peru 我已经用构造函数City(字符串cityName)创建了一个类City 大体上,我想为每个城市创建一个指针,如: City* lima = new City( City("Lima, Peru"); City* rome = new City( City("Rome, Italy"); 有没有办法通过循环读取文本中的行来
Lima, Peru
Rome, Italy
Madrid, Spain
Lima, Peru
我已经用构造函数City(字符串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);
}
有没有办法,或者我必须为每一个手动操作。有什么建议吗
谢谢您应该使用
City
对象的std::vector
来存储实例。和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));
}
std::vector v;
std::fstream out(“out.txt”);//你的txt文件
for(std::string str;std::getline(out,str);)
{
v、 推回(城市(str));
}
因为您只想列出一次城市,但它们可能会在文件中出现很多次,所以使用集合
或无序集合
是有意义的,这样插入只在第一次起作用
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";
std::设置城市;
if(std::ifstream in(“cities.txt”))
for(std::string line;getline(in,line);)
城市。插入(城市(线));//如果城市已经被知道了,那就失败了——谁在乎呢?
其他的
cerr不是一个答案,但是关于如何使用构造函数有一些奇怪的地方。要动态创建City
对象,最好使用City*lima=new City(“秘鲁利马”)代码>,而非城市*lima=新城市(城市(“秘鲁利马”)代码>。请参见此处:,反射对该要求有什么潜在用途?@TonyD我想他是在要求通过文件中的文本来命名变量。啊,是的-“City*lima=…”-谢谢-我没有注意到。谢谢大家,谢谢Tony。我现在明白了,我会用一套,因为我不想让城市重复……你们帮了大忙。谢谢lot@user2419831:有一件事-你需要一个bool操作符