正如标题所说我试图将文件读入两个向量。
该文件看起来像这样
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);
}
}
答案 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);
}
}