我想获得一个txt文件与条目part1/1 part2/4 etc ...从用户和存储在向量“part_name”和“rev_id”。因此“part_name”包含part1 part2 ...并且“rev_id”包含1 4 ..... 该程序在命令提示符下以program.exe list.txt的形式运行。C++矢量迭代失败的单个元素输入
当txt文件有2个或多个输入时,程序工作正常,但是当它有单个输入时,vector
大小显示为2(但必须是1)。
即
如果list.txt
包含part1
/1
part2
/4
=> part_name.size()
是2
如果list.txt
包含part1
/1
=> part_name.size()
仍然是2
有人可以帮我解决这个问题?
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <vector>
using namespace std;
int main(int argc, char*argv[])
{
std::string s ;
std::string delimiter = "/";
size_t pos;
std::vector<std::string> part_name;
std::vector<std::string> rev_id;
std::string token1,token2;
ifstream readFile (argv[1]);
if (readFile.is_open())
{
while (!readFile.eof())
{
readFile >> s;
pos=s.find(delimiter);
if((pos!=std::string::npos)&&(pos!=0))
{
token1 = s.substr(0, s.find(delimiter));
token2 = s.substr(pos + delimiter.length());
part_name.push_back(token1);
rev_id.push_back(token2);
}
}
}
else{
std::cout<<"Cannot open file"<<endl;
}
readFile.close();
for (unsigned j=0; j < part_name.size(); j++)
{
cout<<part_name.size()<<endl;
cout<<"part name j is " <<part_name[j]<<endl;
cout<<"part id j is " <<rev_id[j]<<endl;
}
}
'part1/1'是一行还是每行可以有多个“部分”? – NathanOliver