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

Convert C++ string variable to long

本文关键字:long 转换 变量 C++ 字符串      更新时间:2023-10-16

我有一个变量:

string item;

它在运行时初始化。我需要将其转换为long。怎么做?我尝试过atol()和strtol(),但总是分别出现以下错误:

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*)'

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

这样尝试:

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

使用字符串流。

#include <sstream>
// code...
std::string text;
std::stringstream buffer(text);
long var;
buffer >> var;

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

如果您没有访问C++11的权限,并且可以使用boost库,则可以考虑以下选项:

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