在C++中,strtoll
函數用于將字符串轉換為長整型(long long
)
如果strtoll
遇到非法字符,它會嘗試解析字符串的開頭部分,直到遇到無法識別的字符。此時,它會將已解析部分的值返回,并將指針endptr
設置為指向第一個未解析的字符。你可以檢查endptr
來確定是否存在非法字符。
下面是一個示例:
#include<iostream>
#include <cstdlib>
#include <cstring>
int main() {
const char* str = "123abc";
char* endptr;
long long value = std::strtoll(str, &endptr, 10);
if (endptr == str || *endptr != '\0') {
std::cout << "Invalid characters detected at position: "<< endptr - str<< std::endl;
} else {
std::cout << "Value: "<< value<< std::endl;
}
return 0;
}
在這個示例中,我們嘗試將字符串"123abc"
轉換為長整型。strtoll
會解析前三個字符("123"
),然后遇到非法字符a
。此時,endptr
將指向a
。我們可以通過檢查endptr
來判斷是否存在非法字符。如果endptr
指向字符串的末尾('\0'
),則表示沒有非法字符;否則,表示存在非法字符。