Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผู้ใช้กำหนดตัวอักษรใน C ++


ที่นี่ เราจะเห็นแนวคิดของตัวอักษรที่ผู้ใช้กำหนดใน C++ จาก C++ เวอร์ชัน 11 User Defined Literals (UDL) จะถูกเพิ่มใน C++ นอกจากนี้ C++ ยังจัดเตรียมตัวอักษรสำหรับประเภทในตัวที่หลากหลาย แต่สิ่งเหล่านี้มีข้อจำกัด

ตัวอักษรในตัว -

  • 31 (จำนวนเต็ม)

  • 3.5 (ดับเบิ้ล)

  • 4.2F (ลอย)

  • 'p' (ตัวละคร)

  • 31ULL (ไม่มีเครื่องหมาย Long Long)

  • 0xD0 (จำนวนเต็มเลขฐานสิบหกที่ไม่ได้ลงนาม)

  • "pq" (สตริง)

นอกเหนือจากตัวอักษรในตัวแล้ว บางครั้งเราต้องการตัวอักษรที่ผู้ใช้กำหนด มีเหตุผลบางประการที่อยู่เบื้องหลัง เรามาดูตัวอย่างกัน −

สมมติว่าเราต้องการกำหนดตัวแปรน้ำหนักตัวหนึ่ง แต่เราไม่สามารถระบุหน่วยได้ เช่น หากเรากำหนดดังนี้ -

long double Weight = 3.5;

เราไม่มีความคิดเกี่ยวกับหน่วย (ปอนด์? กิโลกรัม? กรัม) แต่การใช้ UDL เราสามารถแนบหน่วยกับค่าต่างๆ ได้ มีประโยชน์เล็กน้อย ทำให้โค้ดอ่านง่ายขึ้น และยังรองรับการแปลงระหว่างเวลาคอมไพล์

weight = 5.6kg;
ratio = 5.6kg/2.1lb;

ในการหาอัตราส่วนข้างต้น จำเป็นต้องแปลงให้เป็นหน่วยเดียวกัน แต่ UDL ช่วยให้เราเอาชนะต้นทุนการแปลหน่วยได้ ในกรณีนี้ เราสามารถกำหนดตัวอักษรที่กำหนดโดยผู้ใช้ในกรณีของประเภทที่กำหนดโดยผู้ใช้และรูปแบบใหม่ของตัวอักษรในกรณีของประเภทในตัว UDL ไม่สามารถประหยัดเวลาในการเขียนโค้ดได้มาก แต่การคำนวณต่างๆ สามารถเปลี่ยนเป็นเวลาคอมไพล์ได้มากขึ้นเรื่อยๆ เนื่องจากการดำเนินการที่เร็วขึ้น

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include<iostream>
#include<iomanip>
using namespace std;
unsigned long long int operator"" _kb( unsigned long long int x ) {
   return x*1024;
}
unsigned long long int operator"" _b( unsigned long long int x ) {
   return x;
}
unsigned long long int operator"" _mb( unsigned long long int x ) {
   return x * 1024 * 1024;
}
int main() {
   unsigned long long int size = 24_kb;
   cout << "Size:" << size << endl;
   cout << "Few more MB:" << ( size + 2_mb ) << endl;
   cout << "Size Div:" <<( 10_kb / 2_kb ) << endl;
   cout << "1KB = " <<( 8_b * 128_b ) << endl;
   return 0;
}

ผลลัพธ์

Size:24576
Few more MB:2121728
Size Div:5
1KB = 1024