C ++ ຜົນໄດ້ຮັບການປ້ອນຂໍ້ມູນພື້ນຖານ


ຫ້ອງສະຫມຸດມາດຕະຖານ C ++ ໃຫ້ຄວາມເປັນໄປໄດ້ທີ່ໃຫຍ່ຫຼວງ ສຳ ລັບການປ້ອນຂໍ້ມູນແລະຜົນຜະລິດ. C ++ ໃຊ້ຕົວເລືອກເອີ້ນວ່າ stream ສຳ ລັບການປະຕິບັດການປ້ອນຂໍ້ມູນແລະຜົນຜະລິດ. ກະແສແມ່ນຫົວ ໜ່ວຍ ໜຶ່ງ ທີ່ໃຊ້ໂດຍໂປແກມອ່ານເພື່ອຂຽນຕົວອັກສອນ. ຍົກຕົວຢ່າງ, ໜ້າ ຈໍ, ແປ້ນພິມຫລືແຟ້ມເອກະສານຖືກສະແດງເປັນກະແສໃນພາສາ C ++ Programming. ທ່ານບໍ່ ຈຳ ເປັນຕ້ອງຮູ້ກ່ຽວກັບລາຍລະອຽດຂອງ ໜ່ວຍ ງານທີ່ ນຳ ໃຊ້ຫຼືຂໍ້ ກຳ ນົດດ້ານວິຊາການເພື່ອເຮັດວຽກກັບມັນ.

ແຟ້ມຫົວຕໍ່ໄປນີ້ຖືກໃຊ້ທົ່ວໄປ ສຳ ລັບການປ້ອນຂໍ້ມູນແລະຜົນຜະລິດໃນ C ++:

  • ໄອເທັນ - ຖືກ ນຳ ໃຊ້ໃນການເຮັດວຽກກັບກະແສການປ້ອນຂໍ້ມູນແບບມາດຕະຖານ, ກະແສການຜະລິດແບບມາດຕະຖານ, ກະແສຂໍ້ມູນຄວາມຜິດພາດມາດຕະຖານທີ່ບໍ່ມີຄຸນຄ່າ
  • iomanip - ຖືກ ນຳ ໃຊ້ ສຳ ລັບການປ້ອນຂໍ້ມູນແລະຜົນຜະລິດ
  • ສາຍໄຟ - ແມ່ນໃຊ້ໃນການເຮັດວຽກກັບແຟ້ມເອກະສານ

ໄອເທັນ

ພວກເຮົາໄດ້ໃຊ້ iostream header ໃນໂປແກຼມກ່ອນ ໜ້າ ນີ້. ທ່ານຕ້ອງລວມເອົາ iostream header ເພື່ອເຮັດວຽກກັບກະແສຕ່າງໆ:

#include <iostream>

ຕອນນີ້ທ່ານສາມາດໃຊ້ສາຍນ້ ຳ ຕໍ່ໄປນີ້ເພື່ອການປ້ອນຂໍ້ມູນແລະຜົນຜະລິດ.

ນ້ໍາຜົນໄດ້ຮັບມາດຕະຖານ - cout

ກະແສການອອກແບບມາດຕະຖານຖືກໃຊ້ເພື່ອສະແດງຂໍ້ມູນໃນ ໜ້າ ຈໍຂອງທ່ານ. ຈຸດປະສົງ cout of ostream ຫ້ອງຮຽນຖືກນໍາໃຊ້ເພື່ອຈຸດປະສົງນີ້:

cout << "Hello " << endl;

ຄ່າໃຊ້ຈ່າຍ ວັດຖຸຖືກ ນຳ ໃຊ້ຮ່ວມກັບ the ຜູ້ປະກອບການແຊກ “ <<” . ສຸດທ້າຍ ແມ່ນຟັງຊັນທີ່ໃສ່ຕົວລະຄອນແບບ ໃໝ່ ແລະກະແສກະແສ.
ທ່ານສາມາດໃຊ້ ຄ່າໃຊ້ຈ່າຍ ຄັດຄ້ານຜົນຜະລິດທີ່ສ້າງຂື້ນໃນປະເພດຂໍ້ມູນ. ມີຄວາມເປັນໄປໄດ້ທີ່ຈະໃຊ້ຜູ້ປະຕິບັດງານ << ຫຼາຍຄົນເພື່ອຜະລິດອົງປະກອບທີ່ແຕກຕ່າງກັນໂດຍການໃຊ້ພຽງ ໜ່ວຍ ດຽວ ຄ່າໃຊ້ຈ່າຍ ຈຸດປະສົງ:
int age = 21;
string name = "Kate";
cout << "My name is " << name << ". I\'m " << age << "years old." << endl;

ໝາຍ ເຫດ: ທ່ານຕ້ອງລວມເອົາ string header ເພື່ອໃຫ້ສາມາດອອກຜົນຂອງຕົວປ່ຽນປະເພດ string:
#include <string>

ກະແສຂາເຂົ້າແບບມາດຕະຖານ - cin

ການປ້ອນຂໍ້ມູນແບບມາດຕະຖານໂດຍປົກກະຕິແມ່ນເປັນຕົວແທນຂອງອຸປະກອນແປ້ນພິມ. ທ cin ຈຸດປະສົງຂອງ istream ຫ້ອງຮຽນຖືກ ນຳ ໃຊ້ເຂົ້າໃນແປ້ນພິມ:

string name;
cout << "Enter your name" << endl;
cin >> name;

ການປ້ອນຂໍ້ມູນແມ່ນເຮັດໂດຍການ ນຳ ໃຊ້ ຜູ້ປະກອບການສະກັດເອົາ ">>". ຜູ້ປະຕິບັດການນີ້ສະກັດຂໍ້ມູນຈາກກະແສແລະເຮັດໃຫ້ມັນກາຍເປັນຕົວແປ:
cin >> name;

ລະຫັດເສັ້ນນີ້ ໝາຍ ຄວາມວ່າຄ່າຂອງ ຊື່ ຕົວປ່ຽນແປງໃນປັດຈຸບັນແມ່ນຖືກຕັ້ງໃຫ້ເປັນເຊືອກທີ່ປ້ອນຈາກແປ້ນພິມ.

ຜູ້ປະຕິບັດການສະກັດຈະ“ ດຶງ” ຕົວອັກສອນຈາກແປ້ນພິມຈົນກວ່າທ່ານຈະບໍ່ກົດປຸ່ມ“ Enter”. ທ່ານສາມາດສ້າງວັດສະດຸປ້ອນເຂົ້າໄດ້ຫຼາຍປະເພດໂດຍໃຊ້ ຜູ້ປະກອບການ >> ເວລາຫຼາຍຄັ້ງທີ່ທ່ານໄດ້ເຮັດມັນ ສຳ ລັບຜົນໄດ້ຮັບຫຼາຍຢ່າງກັບ ຜູ້ປະຕິບັດການ <<:

int age;
string name;
cout << "Enter your name and your age" << endl;
cin >> name >> age;

ກະແສຂໍ້ມູນຄວາມຜິດພາດມາດຕະຖານທີ່ບໍ່ມີຄຸນຄ່າ - cerr

ກະແສຂໍ້ມູນຄວາມຜິດພາດມາດຕະຖານທີ່ບໍ່ຖືກປ້ອງກັນຖືກໃຊ້ໃນເວລາທີ່ທ່ານຕ້ອງການສະແດງຂໍ້ຄວາມຜິດພາດໃນທັນທີ. ສາຍນ້ ຳ ນີ້ຕິດກັບອຸປະກອນຂໍ້ຜິດພາດໃນຕອນຕົ້ນ. ສຳ ລັບຄອມພິວເຕີຂອງທ່ານອຸປະກອນຜິດພາດມາດຕະຖານແມ່ນ ໜ້າ ຈໍຂອງທ່ານຄືກັນ. ທ່ານສາມາດໃຊ້ການເຂົ້າເບິ່ງກະແສຄວາມຜິດພາດແບບມາດຕະຖານທີ່ບໍ່ມີຄຸນຄ່າ cerr object ເຊິ່ງເປັນຕົວຢ່າງຂອງ ostream ຊັ້ນ ການ ນຳ ໃຊ້ cerr ແມ່ນຄ້າຍຄືກັນກັບການ ນຳ ໃຊ້ cout. ຄວາມແຕກຕ່າງປະກອບດ້ວຍຄວາມຈິງທີ່ທ່ານໃຊ້ກະແສຂໍ້ຜິດພາດຂອງທ່ານ ສຳ ລັບຜົນຜະລິດແລະບໍ່ແມ່ນກະແສຜົນຜະລິດທີ່ໄດ້ມາດຕະຖານ:

//display error message
cerr << "Something went wrong..." << endl;

ປ້ອງກັນສາຍນ້ ຳ ຂໍ້ຜິດພາດມາດຕະຖານ - clog

ອຸດຕັນ ຈຸດປະສົງຂອງ ໂອເລັນ class ສະແດງກະແສຄວາມຜິດພາດແບບມາດຕະຖານ. ຄວາມແຕກຕ່າງລະຫວ່າງກະແສຂໍ້ມູນຄວາມຜິດພາດທີ່ບໍ່ໄດ້ຮັບຄວາມກົດດັນແລະຄວາມບໍ່ມີຕົວຕົນປະກອບດ້ວຍຄວາມຈິງທີ່ແຕ່ລະບ່ອນໃສ່ ອຸດຕັນ ວັດຖຸເຮັດໃຫ້ຜົນຜະລິດຖືກຈັດຢູ່ໃນ buffer ຈົນກ່ວາ buffer ຈະເຕັມໄປຫຼືກະແສ. ຂໍ້ຄວາມຈະຖືກສະແດງຢູ່ ໜ້າ ຈໍຂອງທ່ານຄືກັນ. ການ ນຳ ໃຊ້ ອຸດຕັນ object ແມ່ນຄືກັນກັບການ ນຳ ໃຊ້ວັດຖຸອື່ນໆຂອງ ໂອເລັນ ຫ້ອງຮຽນ:

clog << "Unable to open file" << endl;

ໃນຂະນະທີ່ທ່ານ ກຳ ລັງສຶກສາພາສາ C ++ ທ່ານຈະສັງເກດເຫັນຄວາມແຕກຕ່າງທີ່ຂ້ອນຂ້າງໃນການ ນຳ ໃຊ້ກະແສຕ່າງໆ. ແຕ່ມັນເປັນນິໄສທີ່ດີທີ່ຈະໃຊ້ກະແສຄວາມຜິດພາດໃນກໍລະນີເມື່ອທ່ານຕ້ອງການສະແດງຂໍ້ມູນກ່ຽວກັບຂໍ້ຜິດພາດໃດໆ.

iomanip

ໄດ້ iostream ຫ້ອງສະຫມຸດໃຫ້ຄວາມເປັນໄປໄດ້ ສຳ ລັບການປ້ອນຂໍ້ມູນແລະຜົນຜະລິດແຕ່ທ່ານບໍ່ສາມາດ ກຳ ນົດຮູບແບບຂອງຂໍ້ມູນໃສ່ກັບຜົນໄດ້ຮັບ / ການປ້ອນຂໍ້ມູນ. ສໍາລັບຈຸດປະສົງນີ້ທ່ານສາມາດໃຊ້ iomanip ຫ້ອງສະຫມຸດ:

#include <iomanip>

iomanip ສະ ໜອງ ຄວາມເປັນໄປໄດ້ຕໍ່ໄປນີ້ ສຳ ລັບຮູບແບບການປ້ອນຂໍ້ມູນແລະຜົນຜະລິດ:

setbase

setbase (int base) - ໜ້າ ທີ່ທີ່ ກຳ ນົດພື້ນຖານໃຫ້ກັບ ຈຳ ນວນຜົນຜະລິດ. ພື້ນຖານສາມາດເປັນ octal, decimal ແລະ hexadecimal:

int a = 160;
cout << "Octal base " << setbase(8) << a << endl;
cout << "Decimal base " << setbase(10) << a << endl;
cout << "Hexadecimal base " << setbase(16) << a << endl;

ຜົນຜະລິດແມ່ນ:

ຖານ Octal 240
ຖານທົດສະນິຍົມ 160
ຖານ Hexadecimal a0

ຊຸດ

setw (int n) - ໜ້າ ທີ່ໃຊ້ເພື່ອ ກຳ ນົດຄວາມກວ້າງຂອງຜົນຜະລິດ. ພາລາມິເຕີແມ່ນຄວາມກວ້າງຂອງພາກສະຫນາມ:

cout << "123456789" << endl;
cout << setw(9) << "x" << endl;

ຜົນໄດ້ຮັບໃນກໍລະນີນີ້ແມ່ນ:

123456789
x

ດັ່ງທີ່ທ່ານສາມາດເຫັນໄດ້, ເຖິງແມ່ນວ່າຄວາມຍາວ“ x” ມີພຽງແຕ່ໂຕດຽວ, ຄວາມກວ້າງຂອງການສະແດງແມ່ນ 9 ຕົວອັກສອນ.

ກຳ ນົດ

setfill (char_type c) - ໜ້າ ທີ່ໃຊ້ເພື່ອ ກຳ ນົດຕົວລະຄອນຕື່ມ. ໃນຕົວຢ່າງທີ່ຜ່ານມາ:

cout << setw(9) << "x" << endl;

ຄວາມກວ້າງແມ່ນ ກຳ ນົດໃຫ້ 9, ແຕ່ວ່າຄວາມຍາວຂອງຜົນຜະລິດແມ່ນ 1. ອີກ 8 ຕົວອັກສອນທີ່ຢູ່ເບື້ອງ ໜ້າ“ x” ແມ່ນຕົວອັກສອນທີ່ເປົ່າຫວ່າງ. ທ່ານສາມາດ ກຳ ນົດຕົວອັກສອນຕື່ມ ສຳ ລັບກະແສໂດຍໃຊ້ setfill ການທໍາງານຂອງ:
cout << "123456789" << endl;
cout <<setfill('0') <<  setw(9) << "x" << endl;

'0' ຖືກ ກຳ ນົດເປັນຕົວລະຄອນຕື່ມ:

123456789
00000000x

setprecision

setprecision (int n); - ກຳ ນົດຄວາມແມ່ນ ຍຳ ຂອງອັດຕານິຍົມ ສຳ ລັບຜົນຜະລິດຂອງຄ່າຈຸດລອຍ. ພາລາມິເຕີ n ແມ່ນຄ່າຂອງຄວາມແມ່ນຍໍາຂອງອັດຕານິຍົມ:

double oneThird = 1.0 / 3.0;
cout << setprecision(1) << oneThird << endl;
cout << setprecision(3) << oneThird << endl;
cout << setprecision(5) << oneThird << endl;

ຕົວປ່ຽນແປງທີ່ຈະສະແດງໃຫ້ເຫັນໃນຜົນຜະລິດມີຄວາມຍາວແຕກຕ່າງກັນຂອງສ່ວນທົດສະນິຍົມຕາມຄວາມແມ່ນ ຍຳ ທີ່ ກຳ ນົດ:

0.3
0.333
0.33333

setiosflags

setiosflags (ໜ້າ ກາກ ios_base :: fmtflags); - ຮູບແບບຜົນຜະລິດຂອງກະແສແມ່ນລະບຸໂດຍທຸງຮູບແບບ. ທ່ານສາມາດຕັ້ງທຸງເພື່ອລະບຸຮູບແບບຂອງຜົນໄດ້ຮັບໂດຍການໃຊ້ setiosflags ໜ້າ ທີ່. ພາລາມິເຕີ ສຳ ລັບ ໜ້າ ທີ່ນີ້ແມ່ນປະເພດ fmtflags. ມີຄວາມເປັນໄປໄດ້ທີ່ຈະຕັ້ງທຸງຮູບແບບດັ່ງຕໍ່ໄປນີ້ໂດຍໃຊ້ ໜ້າ ກາກຮູບແບບ:

 ພາກສະຫນາມ ຫນ້າກາກຮູບແບບ ຜົນກະທົບ
 ທຸງເອກະລາດ Boolalpha ອ່ານຫຼືຂຽນອົງປະກອບ bool ວ່າເປັນຄວາມຈິງແລະບໍ່ຖືກຕ້ອງ.
 Showbase ຂຽນຄ່າຕ່າງໆທີ່ຢູ່ເບື້ອງ ໜ້າ ດ້ວຍຕົວ ນຳ ໃຊ້ຕົວເລກຂອງພວກເຂົາ.
 ບ່ອນວາງສະແດງ ຂຽນຄຸນຄ່າຈຸດລອຍຕົວລວມທັງຈຸດທົດສະນິຍົມສະ ເໝີ.
 ການສະແດງ ຂຽນຄຸນຄ່າຕົວເລກທີ່ບໍ່ລົບທີ່ຢູ່ເບື້ອງ ໜ້າ ດ້ວຍ“ +”.
 ຂ້າມ ຂ້າມຊ່ອງຫວ່າງຊັ້ນ ນຳ
 unitbuf ຜົນຜະລິດໄຫຼອອກຫຼັງຈາກການປະຕິບັດງານແຕ່ລະຄັ້ງ.
 ໂຕໃຫຍ່ ປ່ຽນແທນຕົວອັກສອນຕົວນ້ອຍທີ່ມີຕົວອັກສອນໃຫຍ່
 ຖານຕົວເລກ
(ສະ ໜາມ ຮົບ)
 Dec ອ່ານຫຼືຂຽນຄຸນຄ່າໂດຍໃຊ້ຮູບແບບຖານທົດສະນິຍົມ.
 hex ອ່ານຫຼືຂຽນຄຸນຄ່າໂດຍໃຊ້ຮູບແບບພື້ນຖານ hexadecimal.
 oct ອ່ານຫຼືຂຽນຄຸນຄ່າໂດຍໃຊ້ຮູບແບບຖານ octal.
 ຮູບແບບທີ່ເລື່ອນໄດ້
(ເລື່ອນລອຍ)
 ຄົງ ຂຽນຄຸນຄ່າຈຸດລອຍໃນຮູບແບບຈຸດຄົງທີ່.
 ວິທະຍາສາດ ຂຽນຄຸນຄ່າແບບເລື່ອນລອຍໃນຮູບແບບວິທະຍາສາດ.
 ການປັບປຸງ
(ເຂດປັບປຸງ)
 ພາຍໃນ ຜົນໄດ້ຮັບແມ່ນ padded ກັບຈຸດພາຍໃນສະເພາະ
 ໄວ້ ຜົນຜະລິດແມ່ນ padded ກັບ ໄວ້
 ສິດ ຜົນຜະລິດແມ່ນ padded ກັບ ສິດ

ທ່ານສາມາດຕັ້ງ ໜ້າ ກາກຫຼາຍຫນ້າໂດຍໃຊ້ | ການປະຕິບັດງານ:

cout << setw(10) << setiosflags(std::ios::left)<< "Hello " << "World!" << endl;
//set numeric base to 16 , show plus sign and show base
cout << hex << setiosflags(std::ios::showpos | std::ios::showbase) << 160 << endl;
double var = 0.000000000001;
//show a double value in decimal base and hexadecimal base
cout << var << " = " << setiosflags(std::ios::floatfield) << var << endl;

ຜົນຜະລິດແມ່ນ:

ສະ​ບາຍ​ດີ​ຊາວ​ໂລກ!
0xa0
+1e-012 = +0x1.197998p-40

resetiosflags

resetiosflags (ໜ້າ ກາກ ios_base :: fmtflags) - ປັບຄ່າທຸງທີ່ລະບຸໄວ້ໂດຍ ຫນ້າກາກ.

ມັນມີຜົນສະທ້ອນກົງກັນຂ້າມກັບການປຽບທຽບກັບ setiosflags.