Ответ 1
С С++ 11:
int value = std::stoi(record[i]);
Я пытаюсь преобразовать 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*’
Как я могу это сделать?
С С++ 11:
int value = std::stoi(record[i]);
Использовать stringstream из стандартной библиотеки. Это чище, а скорее С++, чем C.
int i3;
std::stringstream(record[i]) >> i3;
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*
и не принимает аргументов.
#include <boost/lexical_cast.hpp>
functiontest(boost::lexical_cast<int>(record[i]));