用C ++创建一堆对象

时间:2015-07-14 08:35:24

标签: c++

我有一个非常简单的情况,我不知道如何解决:
我正在解析一个包含地址(城市,街道和街道号码)的文件,并拥有以下类:

class Address
{
  std::string city;
  std::string street;
  std::string number;
};

我想为我在文件中找到的每个地址创建一个对象,但我不知道有多少文件可以更改。有没有办法创建一个对象数组;或任何更合适的解决方案?

注意:解析器工作正常,所要做的就是设置对象中的值。

2 个答案:

答案 0 :(得分:4)

您可以将std :: vector用于此目的:http://en.cppreference.com/w/cpp/container/vector

#include <vector>

struct Address
{
  std::string city;
  std::string street;
  std::string number;
};

bool parseAddress(Address& address)
{
    //TODO: implement
    //TODO: return "true" if another address has been successfully parsed
}

int main()
{
    std::vector<Address> addresses;
    Address current;
    while(parseAddress(current))
    {
        addresses.push_back(current);
    }
    return 0;
}

答案 1 :(得分:1)

与@Serge类似,而不是使用解析器直接定义输入操作符。

struct Address
{
  std::string city;
  std::string street;
  std::string number;
  friend std::istream& operator>>(std::istream& in, Address& address) {
      return parseAddress(in, address);
  }
};

std::istream& parseAddress(std::istream& in, Address& address)
{
    //TODO: implement
    //TODO: return stream.
    //          If the parse failed.
    //                Then set the bad bit on the stream.
}
int main()
{
    std::ifstream          file("address.txt");
    std::vector<Address>   addresses(std::istream_iterator<Address>(file),
                                     std::istream_iterator<Address>());
}