我正在尝试将字符串转换为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)
有帮助吗?
尝试
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)
该函数可以抛出异常.