为什么我的向量中的成对元素输出错误?

Why are the paired elements in my vector outputting wrong?

就上下文而言,我正在为一家商店开发奖励系统程序。我有一个文件,其中包含一个项目列表,客户在每个项目的名称下方获得积分。以下是该文件包含的内容:

rolling papers
1
lighter
1
silicone pipe
5
glass pipe
8
water pipe
10

我正在尝试从文件中读取两个不同的变量,然后将这些变量存储在成对的向量中。但是我注意到,当我从向量中输出对时,项目的第一个字母丢失了,并且这些点完全消失了。我试图将点更改为 char 而不是 int,并在配对向量中做了同样的事情。两者都给出了类似的 inaccurate/strange 输出。我在这里做错了什么?谢谢你们。这是我的程序的一部分,我试图将 items/points 存储在配对向量中:

    int answer;
    int points;
    std::string tempName;
    std::string name;
    std::string item;
    std::ifstream inFS;
    std::vector<std::string> nameList;
    std::vector<std::pair<std::string, int>> pairedList;
    std::cout << "Would you like to add points to a member's name? If not, input 0 to look at other options!" << std::endl;
    std::cout<< "Otherwise, input 1 to continue to the point system." << std::endl;
    std::cin >> answer;
    if (answer == 0)
        options();
    if (answer == 1) {
        inFS.open("items.dat");
        if (inFS.is_open())
            std::cout << "File opened successfully." << std::endl;
        while (std::getline(inFS, item)) {
            inFS >> points;
            pairedList.push_back(make_pair(item, points));
        }
        if (!inFS.eof())
            std::cout << "Not able to reach end of file" << std::endl;
        inFS.close();
        for (int i = 0; i < pairedList.size(); i++)
            std::cout << pairedList[i].first << " " << pairedList[i].second << std::endl;
        exit(1);
    }
} 

尝试将 inFS >> points 更改为另一个 std::getline(inFS, points_str)(注意您需要一个 std::string points_str{};);那么你可以做一个make_pair(item, std::stoi(points_str))[Demo]

#include <iostream>  // cout
#include <string>  // getline, stoi

int main()
{
    std::string item{};
    std::string points{};
    while (std::getline(std::cin, item))
    {
        std::getline(std::cin, points);
        std::cout << "item = " << item << ", points = " << std::stoi(points) << "\n";
    }
}