Search⌘ K
AI Features

Initialize Complex Structures From File Input

Explore how to import and initialize complex structures such as a vector of City objects directly from a formatted text file using C++20 input streams. Learn to specialize the operator>> for custom types, handle whitespace with std::ws, and address common issues like the UTF-8 Byte Order Mark on Windows. This lesson equips you to parse and populate structured data efficiently from text files.

We'll cover the following...

One strength of the input stream is its ability to parse different types of data from a text file and convert them to their corresponding fundamental types. Here's a simple technique for importing data into a container of structures using an input stream.

How to do it

In this recipe, we'll take a data file and import its disparate fields into a vector of struct objects. The data file represents cities with their populations and map coordinates:

  • This is input.txt, the data file we'll read:

Las Vegas
661903 36.1699 -115.1398
New York City
8850000 40.7128 -74.0060
Berlin
3571000 52.5200 13.4050
Mexico City
21900000 19.4326 -99.1332
Sydney
5312000 -33.8688 151.2093

The city name is on a line by itself. The second line is population, followed by longitude and latitude. This pattern repeats for each of the five cities.

  • We'll define ...