我正在尝试将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*’
我该怎么做?
答案 0 :(得分:34)
使用C ++ 11:
int value = std::stoi(record[i]);
答案 1 :(得分:12)
使用标准库中的stringstream。它更干净,而且比C语言更像是C ++。
int i3;
std::stringstream(record[i]) >> i3;
答案 2 :(得分:11)
record[i].c_str
与
不同record[i].c_str()
您实际上可以从错误消息中获取此信息:函数需要const char*
,但您提供类型为const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const
的参数,该参数是指向类{{}的成员函数的指针。 1}}返回std::basic_string<char, std::char_traits<char>, std::allocator<char> >
并且不带参数。
答案 3 :(得分:0)
#include <boost/lexical_cast.hpp>
functiontest(boost::lexical_cast<int>(record[i]));