C++: Large repositories of recorded measurement data are available on the World
ID: 3675617 • Letter: C
Question
C++:
Large repositories of recorded measurement data are available on the World Wide Web from a wide spectrum of applications such as stock market data, weather/climate data, etc.
Use your Web browser to view the following URL:
http://earthquake.usgs.gov/earthquakes/map/
This site is maintained by the US Geological Service and reports recent earthquake activity around the world. If you examine the upper left corner of this web page, you will see a link marked 'download'. Select this link and then choose 'CSV' as the file format. Now save the downloaded file in your home directory and then use a text editor to examine it.
The file contains a large quantity of information that is detailed in the first line of the file. We will only be interested in the magnitude of the earthquake and the place (the string indicating where the event occurred, not the latitude/longitude). As you examine the file, note that the place is actually two comma separated strings. The first begins with a double-quote and the second ends with another double quote. The "general" location we are interested in is the second of the two strings that make up the place description.
First, write a program that will read the file and output the categories from the first line, along with their relative location in the line:
Example:
0 time
1 latitude
2 longitude
3 depth
4 mag
5 mag Type
6 nst
7 gap
8 dmin
9 rms
10 net
11 id
12 updated
13 place
14 type
You should use the getline() function to read the first line of the file and the split function provided on the website to create the value array
Explanation / Answer
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
vector<string> &split(const string &s, char delim, vector<string> &elems) {
stringstream ss(s);
string item;
while (getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
vector<string> split(const string &s, char delim) {
vector<string> elems;
split(s, delim, elems);
return elems;
}
int main() {
ios::sync_with_stdio(false);
vector<string> tokens;
string line;
ifstream file ("2.5_day.csv");
if (file.is_open()) {
getline(file, line);
}
else {
cout << "Could not open file" << endl;
}
tokens = split(line, ',');
for (int i = 0; i < tokens.size(); i++)
cout << i << " " << tokens[i] << endl;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.