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

时间:2014-05-07 04:52:16

标签: c++ vector

正如标题所说我试图将文件读入两个向量。

该文件看起来像这样

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);

  }
}

2 个答案:

答案 0 :(得分:3)

number的类型更改为int

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

答案 1 :(得分:2)

你可以使用我相信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()可能是一个糟糕的选择,我将修改我的答案。请参阅this链接。已接受的答案建议使用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);

 }
}