将每行两个单词的文件读入两个不同的向量

Reading a file with two words per line into 2 different vectors

本文关键字:两个 向量 文件 单词      更新时间:2023-10-16

正如标题所说,我正在尝试将文件读取为两个向量。

文件看起来像这样

1你好2

如何

3

4你

现在我有这个,但是它似乎不工作

int number;
string word;
std::vector<int> first;
std::vector<string> second;
ifstream inFile(File);
if (inFile.is_open()) {
  while (inFile >> number >> word) {
    first.push_back(number);
    second.push_back(word);
  }
}

number的类型更改为int

此外,is_open()是多余的(除非你有一个else语句来处理文件无法打开的情况),因为如果文件无法打开,while循环无论如何都会失败

您可以使用我认为在std库的头文件中的atoi()函数。它将一个ASCII字符串转换为一个整数。所以…

#include<string>
string number, word;
std::vector<int> first;
std::vector<string> second;
ifstream inFile(File);
if (inFile.is_open()) {
while (inFile >> number >> word) {
  first.push_back(atoi(number));
  second.push_back(word);
 }
}

你可能需要检查,以确保atoi()没有失败之前,你推到向量,但这可能适用于你的情况。

好运编辑:根据下面的评论,atoi()可能是一个糟糕的选择,我将修改我的答案。请看这个链接。这是公认的答案建议使用std::stoi()所以修改一下我的答案…
#include<string>
string number, word;
std::vector<int> first;
std::vector<string> second;
ifstream inFile(File);
if (inFile.is_open()) {
while (inFile >> number >> word) {
  first.push_back(std::stoi(number));//changed this line
  second.push_back(word);
 }
}