atol和strtol的區別
atol和strtol的區別
字串中有兩個重要的函式:atol和strtol,它們的功能都是字元陣列,轉數值。但是用法差異較大。我們下面來說一下這兩個函式在具體使用的時候要注意哪些方面。
首先,說atol。
這個函式定義為:
long atol(const char* s);
就是輸入一個字元陣列(注意,不是string型別的字串)的頭元素的地址,然後我們就可以轉換成數值。舉個例子:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char a[] = "123";
cout<<atoi(a)<<endl;
char b[] = "abc";
cout<<atoi(b)<<endl;
char c[] = "23&";
cout<<atoi(c)<<endl;
string str = "234";
cout<<atoi(str.c_str())<<endl;
return 0;
}
結果:
如果我們輸入的是第一個字元就是非法的字元,那麼返回的是0;
如果我們輸入的是前面是有效的數值字元,那麼返回前面的數值,後面非法的不返還。
那麼如果我們需要用string型別過來操作呢?可以這樣子:
我們使用str.c_str()函式。
再說strtol函式。
函式定義為:
long strtol(const char*s, char** endptr, int base);
作用就是將字串轉換成長整數,base為進位制數。如果轉換成功,*endptr指向s; 否則*endptr指向第一個非法字元。
關於其中的base,規定如下:
有下面幾個例子:
所以說,strtol函式中的輸入base的作用還是挺大的。
相關文章
- ../和./和/的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ||和??的區別
- /*和/**的區別
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- T和?的區別
- makefile =和:=的區別
- ++a和a++的區別
- ./ 和sh 的區別
- 和區別
- springmvc和springboot的區別SpringMVCSpring Boot
- SDK和API的區別?API
- ArrayList和LinkedList的區別?
- button和submit的區別MIT
- MTV和MVC的區別MVC
- hadoop和spark的區別HadoopSpark
- rpop 和 brpop的區別
- WebApi和MVC的區別WebAPIMVC
- GET和POST的區別?
- ArrayList和LinkedList的區別
- WBS和TASK的區別?
- JavaScript中for in 和for of的區別JavaScript
- innerText 和 textContent 的區別?
- var 和 let 的區別
- @JsonProperty和@JsonAlias的區別JSON
- POST 和 GET 的區別
- sass和less的區別
- MySQL和Oracle的區別MySqlOracle
- sizeThatFits 和 sizeToFit的區別
- GitHub和GitLab的區別GithubGitlab
- Js中for in 和for of的區別JS
- isKindOfClass和isMemberOfClass的區別
- innerText和textContent的區別
- cookie和session的區別CookieSession
- require 和 import 的區別?UIImport
- uri和url的區別
- define和typedef的區別