Нет соответствующей функции для вызова - PullRequest
1 голос
/ 08 мая 2011

Я получил этот метод, где я получаю строки пользовательских данных из файла, затем разделяю строки на части и затем помещаю эти части в разные строки. Затем, наконец, я создаю новый пользовательский объект и добавляю пользовательский объект в другой вектор с именем 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):

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 ]

2 голосов
/ 08 мая 2011

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);
0 голосов
/ 08 мая 2011
 while ( file.good() )
    {
       getline (file,line);

должно быть:

 while ( getline (file,line) ) 

Подскажите, пожалуйста, в какой книге вы читали, чтобы протестировать поток с помощью функции good ()? Я искренне хочу это знать.

Редактировать: мне кажется, что вы никогда не заполняете вектор частей. А что это за g_string? (кроме, хм, взрослого значения).

...