Подтвердить что ты не робот

Преобразовать std::string в integer

Я пытаюсь преобразовать 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*’

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

4b9b3361

Ответ 1

С С++ 11:

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

Ответ 2

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

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

Ответ 3

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* и не принимает аргументов.

Ответ 4

#include <boost/lexical_cast.hpp>

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