读取同一行中的混合输入(字符串/浮点数),并将其存储在数组中

时间:2017-01-18 13:15:09

标签: c++ arrays

我正在尝试编写一个程序来读取来自不同城市的温度的文件,一周中的每一天,最后找到最低和最高温度,并在一周中输出它测量的位置和测量的城市 该文件的格式如下:

中号
纽约-5.3
达拉斯8.5
法戈-1.3
Ť
纽约-3.3
达拉斯5.2
法戈-3.6
w ^
...

我遇到的问题是输入并将其存储在数组中,因为这些行只有一周的名称。另外,我不认为我可以链接>>运营商因为有些线路上有纽约市,其间有一个空白区域。几天以来,我一直在努力解决这个问题,而且我从来没有比这更进一步 这是一门初学者课程,所以请在帮助下牢记这一点:)我会发布一些我设法加密的小代码,这些代码并不多,而且它不起作用。

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
    string line;
    ifstream infile("temps.txt");
    float numbers[30] = { 0.0 };
    int count = 1;
    istringstream iss(line);
    string city;
    float n;


    while (getline(infile, line))
    {
        if (count % 4 == 0)
        {

        }
        else
        {
            iss >> city >> n;
        }
    }
    for (int i = 0; i < 10; i++)
    {
        cout << numbers[i] << " ";
    }
}

1 个答案:

答案 0 :(得分:1)

从文件中获取一行到字符串后,很容易:

if(line.size() == 1)
{
    // you have a day in line
}
else
{
    // you have a <city + temperature>, let's parse
    // the last space in line is always the one right before the temperature. Here is it's index.
    int lastSpace = line.find_last_of(' '); 

    int temp = std::stoi(line.substr(lastSpace + 1, line.size()));
    string cityName = line.substr(0, lastSpace);
}

将温度作为int并将城市名称作为字符串后,您可以根据需要存储它们(数组,地图,列表等)以获得一周的最高温度。