8

我有一个变量:

string item;

它在运行时被初始化。我需要将其转换为长。怎么做?我已经尝试过 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*)'
4

5 回答 5

23

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

于 2012-08-02T11:11:52.673 回答
21

试试这样:

long i = atol(item.c_str());
于 2012-08-02T11:12:01.513 回答
6

使用字符串流。

#include <sstream>

// code...
std::string text;
std::stringstream buffer(text);
long var;
buffer >> var;
于 2012-08-02T11:14:38.087 回答
5

使用std::stol < 字符填充空间 >

于 2012-08-02T11:12:52.340 回答
2

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

long l = boost::lexical_cast< long >( item );
于 2012-08-02T12:32:57.457 回答