Преобразовать std :: string в целое число

Я пытаюсь преобразовать std::string хранится в std::vector к целому числу и передать его функции в качестве параметра.

Это упрощенная версия моего кода:

vector <string> record;
functiontest(atoi(record[i].c_str));

Моя ошибка заключается в следующем:

error: argument of type ‘const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const’ does not match ‘const char*’

Как я могу это сделать?

16

Решение

С С ++ 11:

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

Другие решения

Используйте stringstream из стандартной библиотеки. Это чище, и это скорее C ++, чем C.

int i3;
std::stringstream(record[i]) >> i3;
12

record[i].c_str

это не то же самое, что

record[i].c_str()

Вы можете получить это из сообщения об ошибке: функция ожидает const char*, но вы предоставляете аргумент типа const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const который является указателем на функцию-член класса std::basic_string<char, std::char_traits<char>, std::allocator<char> > который возвращает const char* и не принимает никаких аргументов.

11

#include <boost/lexical_cast.hpp>

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