J'essaie de convertir un std::string
stocké dans un std::vector
en un entier et de le transmettre à une fonction en tant que paramètre.
Ceci est une version simplifiée de mon code:
vector <string> record;
functiontest(atoi(record[i].c_str));
Mon erreur est la suivante:
error: argument of type ‘const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const’ does not match ‘const char*’
Comment puis-je faire ceci?
Avec C++ 11:
int value = std::stoi(record[i]);
Utilisez stringstream de la bibliothèque standard. C'est plus propre et c'est plutôt C++ que C.
int i3;
std::stringstream(record[i]) >> i3;
record[i].c_str
n'est pas la même chose que
record[i].c_str()
Vous pouvez réellement obtenir cela à partir du message d'erreur suivant: la fonction attend un const char*
, mais vous fournissez un argument de type const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const
, qui est un pointeur sur une fonction membre de la classe std::basic_string<char, std::char_traits<char>, std::allocator<char> >
qui renvoie un const char*
et ne prend aucun argument.
#include <boost/lexical_cast.hpp>
functiontest(boost::lexical_cast<int>(record[i]));