将C ++字符串变量转换为long

时间:2012-08-02 11:09:52

标签: c++ string long-integer

我有一个变量:

string item;

它在运行时被初始化。我需要将它转换为long。怎么做?我试过atol()和strtol()但是我总是分别对strtol()和atol()有错误:

cannot convert 'std::string' to 'const char*' for argument '1' to 'long int strtol(const char*, char**, int)'

cannot convert 'std::string' to 'const char*' for argument '1' to 'long int atol(const char*)'

5 个答案:

答案 0 :(得分:17)

C ++ 11:

long l = std::stol(item);

http://en.cppreference.com/w/cpp/string/basic_string/stol

C ++ 98:

char * pEnd;.
long l = std::strtol(item.c_str(),&pEnd,10);

http://en.cppreference.com/w/cpp/string/byte/strtol

答案 1 :(得分:16)

试试这样:

long i = atol(item.c_str());

答案 2 :(得分:5)

使用字符串流。

#include <sstream>

// code...
std::string text;
std::stringstream buffer(text);
long var;
buffer >> var;

答案 3 :(得分:4)

使用std::stol&lt;要填充空格的字符&gt;

答案 4 :(得分:2)

如果您无法访问C ++ 11,并且可以使用boost库,则可以考虑以下选项:

long l = boost::lexical_cast< long >( item );