C++ 没有用于调用的匹配函数
我得到了这样一种方法,我从一个文件中获取用户数据行,然后将这些行分割成若干部分,然后将这些部分放入不同的字符串中。最后,我创建了一个新的用户对象,并将该用户对象添加到另一个名为users的向量中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
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) )