Convert std::string to integer

I'm trying to convert a std::string stored in a std::vector to an integer and pass it to a function as a parameter.

This is a simplified version of my code:

vector <string> record;
functiontest(atoi(record[i].c_str));

My error is as follows:

error: argument of type ‘const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const’ does not match ‘const char*’

How can I do this?

Answers


With C++11:

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

Use stringstream from standard library. It's cleaner and it's rather C++ than C.

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

record[i].c_str

is not the same as

record[i].c_str()

You can actually get this from the error message: the function expects a const char*, but you're providing an argument of type const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const which is a pointer to a member function of the class std::basic_string<char, std::char_traits<char>, std::allocator<char> > that returns a const char* and takes no arguments.


#include <boost/lexical_cast.hpp>

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

Need Your Help

How can I add a test method to a group of Django TestCase-derived classes?

python django unit-testing subclassing

I have a group of test cases that all should have exactly the same test done, along the lines of "Does method x return the name of an existing file?"

How to config Tomcat to serve images from an external folder outside webapps?

tomcat

How can i use Tomcat to serve image files from a public folder outside webapps? I dont want to use a 2nd Apache fileserver on a different port since the image files are part of the same app. And i ...