20

我正在尝试将std::string存储在 a 中的 a转换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

4 回答 4

43

使用 C++11:

int value = std::stoi(record[i]);
于 2012-09-27T19:37:11.810 回答
11
record[i].c_str

不一样

record[i].c_str()

您实际上可以从错误消息中得到这一点:该函数需要 a 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> >返回 aconst char*并且不带参数的类的成员函数的指针。

于 2012-09-27T19:07:39.517 回答
11

使用标准库中的字符串流。它更干净,它更像是 C++ 而不是 C。

int i3;
std::stringstream(record[i]) >> i3; 
于 2012-09-27T19:11:41.273 回答
0
#include <boost/lexical_cast.hpp>

functiontest(boost::lexical_cast<int>(record[i]));
于 2015-09-15T11:39:53.560 回答