将字符串转换为long

PEA*_*EAR 6 c++ string

我正在尝试将字符串转换为long.这听起来很容易,但我仍然得到同样的错误.我试过了:

include <iostream>
include <string>    

using namespace std;

int main()
{
  string myString = "";
  cin >> myString;
  long myLong = atol(myString);
}
Run Code Online (Sandbox Code Playgroud)

但总是错误:

.../main.cpp:12: error: cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'long int atol(const char*)'
Run Code Online (Sandbox Code Playgroud)

发生.参考文献如下:

long int atol ( const char * str );
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

Vla*_*cow 9

尝试

long myLong = std::stol( myString );
Run Code Online (Sandbox Code Playgroud)

该功能有三个参数

long stol(const string& str, size_t *idx = 0, int base = 10);
Run Code Online (Sandbox Code Playgroud)

您可以使用第二个参数来确定字符串中解析数字的位置的位置.例如

std::string s( "123a" );

size_t n;

std::stol( s, &n );

std::cout << n << std::endl;
Run Code Online (Sandbox Code Playgroud)

输出是

3
Run Code Online (Sandbox Code Playgroud)

该函数可以抛出异常.


Joh*_*nTG 8

写得很久 myLong = atol(myString.c_str());