C++ 没有用于调用的匹配函数

C++ 没有用于调用的匹配函数,c++,vector,int,C++,Vector,Int,我得到了这样一种方法,我从一个文件中获取用户数据行,然后将这些行分割成若干部分,然后将这些部分放入不同的字符串中。最后,我创建了一个新的用户对象,并将该用户对象添加到另一个名为users的向量中 void userdata::importData(string fname) { g_string g; filename= fname; string line; ifstream file(filename.c_str()); vector<strin

我得到了这样一种方法,我从一个文件中获取用户数据行,然后将这些行分割成若干部分,然后将这些部分放入不同的字符串中。最后,我创建了一个新的用户对象,并将该用户对象添加到另一个名为users的向量中

void userdata::importData(string fname)
{
    g_string g;
    filename= fname;
    string line;
    ifstream file(filename.c_str());
    vector<string> parts;
    while ( file.good() )
    {
       getline (file,line);
       g.split(',', line); 
       vector<string>::iterator i; 

       for(i = parts.begin(); i < parts.end(); i++)
       {
             string usernr = parts.at(0);
             string name = parts.at(1);
             string gender = parts.at(2);
             string age = parts.at(3);
             string profession = parts.at(4);
             string email = parts.at(5);

             user user(usernr , name , gender , age , profession , email );
             users.push_back(user);
       }
       parts.clear();
    }

    file.close();
}
void userdata::importData(字符串fname)
{
g_字符串g;
filename=fname;
弦线;
ifstream文件(filename.c_str());
向量部分;
while(file.good())
{
getline(文件,行);
g、 拆分(“,”行);
向量::迭代器i;
对于(i=parts.begin();i
问题是,在将字符串设置为部分的每一行上都会出现此错误。at(int)-value:

test.cpp:在“void userdata::importData(类字符串)”方法中:
test.cpp:186:对“vector::at(int)”的调用没有匹配的函数
test.cpp:187:对“vector::at(int)”的调用没有匹配的函数
test.cpp:188:对“vector::at(int)”的调用没有匹配的函数
test.cpp:189:对“vector::at(int)”的调用没有匹配的函数
test.cpp:190:对“vector::at(int)”的调用没有匹配的函数
test.cpp:191:对“vector::at(int)”的调用没有匹配的函数
有人知道什么地方可能出错吗?

std::vector::at()
接受一个未签名的
size\u类型的参数。也许这是可行的:

         string usernr = parts.at(0u);
         string name = parts.at(1u);
         string gender = parts.at(2u);
         string age = parts.at(3u);
         string profession = parts.at(4u);
         string email = parts.at(5u);
应该是:

 while ( getline (file,line) ) 
你能告诉我你读的哪本书告诉你用good()函数测试流吗?我真的很想知道这一点


编辑:在我看来,好像你从来没有填充过零件向量。g_弦是什么东西?(除了成人的意思之外)。

好的,但这并不能解决我的问题=)@user709712:cplusplus.com在您快速需要一些函数信息时非常好,但是示例和教程非常糟糕。如果你真的想学习C++,我建议购买一本C++书。@ USER 7097:尝试重新安装你的编译器,因为你的代码很好。@你在你所发布的代码中,部分没有在方法之外声明。如果你没有发布真正的代码,就没有任何方法可以帮助你。DevC++是一堆cr*p——隐藏错误的可能性要比暴露错误的可能性大得多。@Merlyn指责编译器是“第一个新手错误”。@night不像有人会立即指责编译器,然后说“哦,没那么糟糕”,甚至不知道OP使用的编译器版本。OP的代码要么是错误的,要么不是他正在编译的代码。我不知道,在你的帖子中,一个事实上一再错误的人(正如我多次指出的)怎么会批评我。对不起,乌纳佩森,我应该在原始帖子中发布我发布的代码不是原始代码,是我的错。但是我现在已经解决了这个问题,安装了另一个编译器,然后它工作了=)只是一个观察:for循环永远不会在编写代码时执行<代码>零件
始终为空。这是真正的代码吗?哦,忘了提到parts向量实际上是在方法之外声明的,并且在我创建的split()-方法中使用,所以parts不是空的=)它对我来说很好。你能不能把它简化成最简单的代码,仍然会产生错误,然后把整个过程都发布出来?另外,您使用的编译器是什么?
 while ( file.good() )
    {
       getline (file,line);
 while ( getline (file,line) )