web-dev-qa-db-fra.com

Convertit std :: string en entier

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?

16
Daniel Del Core

Avec C++ 11:

int value = std::stoi(record[i]);
34
Pete Becker

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; 
12
Indy9000
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.

11
Luchian Grigore
#include <boost/lexical_cast.hpp>

functiontest(boost::lexical_cast<int>(record[i]));
0
Darko Veberic