呼叫没有匹配功能

时间:2011-05-07 22:04:42

标签: c++ vector int

我得到了这种方法,我从文件中获取userdata行,然后将行拆分为多个部分,然后将这些部分放入不同的字符串中。最后,我正在创建一个新的用户对象,并将用户对象添加到另一个名为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();
}

问题是我在我将字符串设置为parts.at(int)-value的每一行都收到此错误:

test.cpp: In method `void userdata::importData(class string)':
test.cpp:186: no matching function for call to `vector<basic_string<char
,string_char_traits<char>,__default_alloc_template<false,0> >,__default_alloc_te
mplate<false,0> >::at (int)'
test.cpp:187: no matching function for call to `vector<basic_string<char
,string_char_traits<char>,__default_alloc_template<false,0> >,__default_alloc_te
mplate<false,0> >::at (int)'
test.cpp:188: no matching function for call to `vector<basic_string<char
,string_char_traits<char>,__default_alloc_template<false,0> >,__default_alloc_te
mplate<false,0> >::at (int)'
test.cpp:189: no matching function for call to `vector<basic_string<char
,string_char_traits<char>,__default_alloc_template<false,0> >,__default_alloc_te
mplate<false,0> >::at (int)'
test.cpp:190: no matching function for call to `vector<basic_string<char
,string_char_traits<char>,__default_alloc_template<false,0> >,__default_alloc_te
mplate<false,0> >::at (int)'
test.cpp:191: no matching function for call to `vector<basic_string<char
,string_char_traits<char>,__default_alloc_template<false,0> >,__default_alloc_te
mplate<false,0> >::at (int)'

任何人都知道可能出现什么问题?

2 个答案:

答案 0 :(得分:2)

std::vector::at()采用size_type参数,该参数是无符号的。也许这有效:

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

答案 1 :(得分:0)

 while ( file.good() )
    {
       getline (file,line);

应该是:

 while ( getline (file,line) ) 

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

编辑:它看起来好像你从未填充零件矢量。什么样的东西是g_string? (除了,咳咳,成人意义)。