ฟังก์ชัน Stol() ใน C++

Fangkchan Stol Ni C



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

ฟังก์ชัน stol ใน C++

stol เป็นฟังก์ชันในตัว C++ ที่มีให้ในไลบรารี std มันแปลงสตริงเป็นตัวเลขจำนวนเต็มยาว โดยจะแปลงเนื้อหาสตริงเป็นจำนวนเต็มของฐานที่ระบุและส่งกลับค่าจำนวนเต็มแบบยาว ใช้พารามิเตอร์สามตัว ตัวหนึ่งเป็นสตริงอินพุต ตัวที่สองคือพารามิเตอร์ของวัตถุ และตัวที่สามคือฐานตัวเลข ไวยากรณ์ของฟังก์ชัน stol มีดังต่อไปนี้:









ฟังก์ชัน stol ใช้พารามิเตอร์สามตัว: input_string, size และ base “input_string” หมายถึงสตริงอินพุตที่ต้องแปลงเป็นจำนวนเต็มแบบยาว



พารามิเตอร์ 'ขนาด' แสดงถึงวัตถุประเภท size_t ซึ่งมีตำแหน่งอักขระถัดไปในสตริงอินพุตหลังค่าตัวเลข อาจเป็นตัวชี้ว่างหากไม่จำเป็นต้องใช้





พารามิเตอร์ที่สาม พารามิเตอร์ 'ฐาน' แสดงถึงฐานที่ต้องมีการตีความสตริง ตัวอย่างเช่น หากกำหนดฐาน '2' สตริงจะถูกตีความว่าเป็นเลขฐาน 2 จำนวนเต็ม ค่าเริ่มต้นของพารามิเตอร์ฐานคือ 10 และหากระบุ 0 ค่าฐานจะถูกกำหนดโดยรูปแบบในลำดับ ฟังก์ชัน stol ส่งกลับจำนวนเต็มแบบยาวซึ่งแทนค่า int ของสตริงที่กำหนด

ตอนนี้ ให้เราสำรวจตัวอย่างเพื่อทำความเข้าใจว่าฟังก์ชัน stol ทำงานอย่างไรใน C++



ตัวอย่าง # 1

ในตัวอย่างนี้ เราจะจัดเตรียมสตริงทศนิยมและเลขฐานสิบหกเพื่อตรวจสอบว่าฟังก์ชัน stol แปลงเป็นตัวเลขจำนวนเต็มทศนิยมและเลขฐานสิบหกอย่างไร

“dec = 123456789” เป็นสตริงทศนิยมและแปลงเป็นจำนวนเต็มแบบยาวโดยใช้ฟังก์ชัน stol stol(dec,&size) โปรดทราบว่าฟังก์ชันนี้ไม่ได้ระบุฐานเป็นพารามิเตอร์อินพุต ซึ่งผลลัพธ์จะใช้ฐาน 10 ที่เป็นค่าเริ่มต้นเพื่อแปลงสตริงเป็นตัวเลขทศนิยม อย่างไรก็ตาม สำหรับการแปลงสตริงจากเลขฐานสิบหกเป็นเลขฐานสิบ ฐาน 16 จะถูกจัดเตรียมเป็นพารามิเตอร์อินพุต stol(hex, nullptr, 16) อย่างที่เราทราบ ฐาน 16 แทนเลขฐานสิบหก

#include

#include

#include

int หลัก ( )

{

มาตรฐาน :: สตริง ธันวาคม = '123456789' ;
มาตรฐาน :: สตริง เลขฐานสิบหก = 'a2bf3c' ;
มาตรฐาน :: สตริง :: size_type ขนาด ;
ยาว ลิเดค = มาตรฐาน :: โต๊ะ ( ธ.ค. & ขนาด ) ;
ยาว lihex = มาตรฐาน :: โต๊ะ ( ฐานสิบหก, nullptr , 16 ) ;
มาตรฐาน :: ศาล << 'ป้อนสตริงทศนิยม' << ธันวาคม << 'แปลงเป็น int ยาว' << ลิเดค << ' \n ' ;
มาตรฐาน :: ศาล << 'ป้อนสตริงเลขฐานสิบหก' << เลขฐานสิบหก << 'แปลงเป็น int ยาว' << lihex << ' \n ' ;
กลับ 0 ;


}

นี่คือผลลัพธ์ต่อไปนี้ โปรดทราบว่าสตริงทศนิยม '123456789' แปลงเป็นจำนวนเต็มทศนิยมแบบยาว '123456789' ในขณะที่สตริงเลขฐานสิบหก 'a2bf3c' แปลงเป็นเลขฐานสิบหก '10665788' ต่อไปนี้คือขั้นตอนที่จำเป็นซึ่งคุณสามารถปฏิบัติตามเพื่อเรียนรู้วิธีการแปลงโดยฟังก์ชัน stol:

( A2BF3C ) = ( 10 × 16 ) + ( สอง × 16 ) + ( สิบเอ็ด × 16 ³ ) + ( สิบห้า × 16 ² ) + ( 3 × 16 ¹ ) + ( 12 × 16 ) = ( 10665788 )

ตัวอย่าง # 2

ในตัวอย่างนี้ เราจะแปลงเลขฐานสองโดยใช้ฟังก์ชัน stol มาดูโค้ดด้านล่างและทำความเข้าใจการทำงานของโค้ดกัน “1010110110” ถูกกำหนดเป็นสตริงอินพุตและฐาน 2 ถูกจัดเตรียมเป็นพารามิเตอร์ฐานอินพุต stol(bin,&size, 2) ซึ่งแสดงตัวเลขในรูปแบบไบนารี ฟังก์ชัน stol จะแปลงเลขฐานสองเป็นเลขฐานสิบโดยทำตามขั้นตอนเหล่านี้:

( 1010110110 ) = ( 1 × สอง ) + ( 0 × สอง ) + ( 1 × สอง บัญชีผู้ใช้นี้เป็นส่วนตัว ) + ( 0 × สอง ) + ( 1 × สอง ) + ( 1 × สอง ) + ( 0 × สอง ³ ) + ( 1 × สอง ² ) + ( 1 × สอง ¹ ) + ( 0 × สอง ) = ( 694 ) #include

#include

#include

int หลัก ( )

{

มาตรฐาน :: สตริง บิน = '1010110110' ;
มาตรฐาน :: สตริง :: size_type ขนาด ;
ยาว libin = มาตรฐาน :: โต๊ะ ( ถัง, & ขนาด, สอง ) ;
มาตรฐาน :: ศาล << 'ป้อนสตริงไบนารี' << บิน << 'แปลงเป็น int ยาว' << libin << ' \n ' ;
กลับ 0 ;


}

ดังที่คุณเห็นว่าฟังก์ชัน stol ส่งคืนผลลัพธ์เช่นเดียวกับกระบวนการแปลงไบนารีเป็นทศนิยมทั่วไป

ตัวอย่าง # 3

ในตัวอย่างนี้ เราจะมาดูกันว่าจะเกิดอะไรขึ้นหากเราทดสอบฟังก์ชัน stol ด้วยอินพุตที่ไม่ถูกต้อง สตริงของอักขระหลายตัวจะถูกจัดเตรียมให้กับฟังก์ชัน stol และ 0 จะถูกจัดเตรียมเป็นค่าฐาน เพื่อให้ฟังก์ชันนี้กำหนดฐานของสตริงโดยอัตโนมัติ นี่คือรหัส:

ชุดของอักขระถูกจัดเตรียมเป็นสตริงอินพุตซึ่งไม่ได้กำหนดโดยค่าพื้นฐานใดๆ เช่น 10, 16, 2 เป็นต้น ดังนั้นฟังก์ชันจะส่งกลับค่าความผิดพลาด

#include

#include

#include

int หลัก ( )

{

มาตรฐาน :: สตริง chr = 'abcdefgh' ;

มาตรฐาน :: สตริง :: size_type ขนาด ;
ยาว str = มาตรฐาน :: โต๊ะ ( คริส nullptr , 0 ) ;
มาตรฐาน :: ศาล << 'ป้อนสตริงอักขระ' << chr << 'แปลงเป็น int ยาว' << str << ' \n ' ;
กลับ 0 ;


}

ดูผลลัพธ์ด้านล่าง โปรดทราบว่าคอมไพเลอร์ได้ยกข้อยกเว้น 'invalid_argument' เนื่องจากฟังก์ชันไม่รองรับสตริงที่ไม่สามารถกำหนดค่าพื้นฐานใดๆ ได้

ตัวอย่าง # 4

ในตัวอย่างนี้ เราจะจัดเตรียมการป้อนข้อมูลที่ถูกต้องและไม่ถูกต้อง เพื่อดูผลลัพธ์ของฟังก์ชัน stol()

สตริงอินพุตเป็นการรวมกันของอักขระที่ถูกต้องและไม่ถูกต้อง '123xf25' isg “0” เป็นฐานอินพุต เพื่อให้ฟังก์ชันกำหนดฐานของสตริงอินพุตโดยอัตโนมัติตามประเภทของอักขระ

#include

#include

#include

int หลัก ( )

{

มาตรฐาน :: สตริง chr = '123xf25' ;
มาตรฐาน :: สตริง :: size_type ขนาด ;
ยาว str = มาตรฐาน :: โต๊ะ ( คริส nullptr , 0 ) ;
มาตรฐาน :: ศาล << 'อินพุตสตริง' << chr << 'แปลงเป็น int ยาว' << str << ' \n ' ;
กลับ 0 ;


}

นี่คือผลลัพธ์ที่แสดงการทำงานของฟังก์ชัน stol พร้อมกับอินพุตที่ถูกต้องและไม่ถูกต้อง:

โปรดทราบว่าฟังก์ชันแปลง '123' เป็นเลขฐานสิบ '123' และยกเลิกสตริงที่เหลือเนื่องจากได้รับอินพุต 'x' ที่ไม่ถูกต้อง สตริงหลังอักขระ 'x' จะไม่ถูกแปลงโดยฟังก์ชัน stol โดยจะคืนค่าเฉพาะอักขระตัวแรกของสตริงที่มีความยาวเป็น int

บทสรุป

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