将std :: string转换为整数

时间:2012-09-27 19:06:05

标签: c++ string int atoi

我正在尝试将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*’

我该怎么做?

4 个答案:

答案 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]));