คำถามติดแท็ก c++

C ++ เป็นภาษาโปรแกรมทั่วไป เดิมได้รับการออกแบบให้เป็นส่วนขยายของ C และมีไวยากรณ์ที่คล้ายกัน แต่ตอนนี้มันเป็นภาษาที่แตกต่างอย่างสิ้นเชิง ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรหัส (จะ) คอมไพล์ด้วยคอมไพเลอร์ C ++ ใช้แท็กเฉพาะรุ่นสำหรับคำถามที่เกี่ยวข้องกับการแก้ไขมาตรฐานเฉพาะ [C ++ 11], [C ++ 14], [C ++ 17] หรือ [C ++ 20] เป็นต้น

30
ฉันจะอ่านและแยกไฟล์ CSV ใน C ++ ได้อย่างไร
ฉันต้องการโหลดและใช้ข้อมูลไฟล์ CSV ใน C ++ ณ จุดนี้มันสามารถเป็นตัวแยกวิเคราะห์เครื่องหมายจุลภาค (เช่นไม่ต้องกังวลเกี่ยวกับการหลบหนีบรรทัดใหม่และเครื่องหมายจุลภาค) ความต้องการหลักคือตัวแยกวิเคราะห์บรรทัดต่อบรรทัดที่จะส่งคืนเวกเตอร์สำหรับบรรทัดถัดไปในแต่ละครั้งที่เรียกใช้เมธอด ฉันพบบทความนี้ซึ่งดูมีแนวโน้มมาก: http://www.boost.org/doc/libs/1_35_0/libs/spirit/example/fundamental/list_parser.cpp ฉันไม่เคยใช้วิญญาณของ Boost แต่ยินดีที่จะลอง แต่ถ้าไม่มีวิธีแก้ปัญหาที่ตรงไปตรงมามากกว่านี้
264 c++  parsing  text  csv 

4
std :: ความยาวของสตริง () และขนาด () ฟังก์ชั่นสมาชิก
ผมอ่านคำตอบสำหรับเรื่องนี้คำถามและพบว่ามีจริงวิธีการที่เรียกว่าlength()สำหรับstd::string(ฉันมักจะใช้size()) มีเหตุผลเฉพาะสำหรับการมีวิธีนี้ในstd::stringชั้นเรียนหรือไม่? ผมอ่านทั้ง MSDN และ CppRefernce และพวกเขาชี้ให้เห็นว่ามีความแตกต่างระหว่างไม่มีและsize() length()หากเป็นเช่นนั้นจะไม่สร้างความสับสนให้กับผู้ใช้ของชั้นเรียนหรือไม่
264 c++  string  stl  size 

13
คุณจะสร้างคลาสแบบคงที่ใน C ++ ได้อย่างไร
คุณจะสร้างคลาสแบบคงที่ใน C ++ ได้อย่างไร ฉันควรจะทำสิ่งที่ชอบ: cout << "bit 5 is " << BitParser::getBitAt(buffer, 5) << endl; สมมติว่าฉันสร้างBitParserชั้นเรียน BitParserคำจำกัดความของคลาสจะเป็นอย่างไร
263 c++  oop  class  syntax  static 

28
ฉันจะเพิ่มการสะท้อนกลับไปยังแอปพลิเคชัน C ++ ได้อย่างไร
ฉันต้องการที่จะสามารถตรวจสอบคลาส C ++ สำหรับชื่อเนื้อหา (เช่นสมาชิกและประเภทของพวกเขา) ฯลฯ ฉันกำลังพูดภาษา C ++ ที่นี่ไม่ใช่จัดการ C ++ ซึ่งมีการสะท้อนกลับ ฉันรู้ว่า C ++ ให้ข้อมูลที่ จำกัด โดยใช้ RTTI ห้องสมุดเพิ่มเติมใด (หรือเทคนิคอื่น ๆ ) สามารถให้ข้อมูลนี้ได้บ้าง?

10
เพดานอย่างรวดเร็วของการหารจำนวนเต็มใน C / C ++
รับค่าจำนวนเต็มxและyC และ C ++ กลับทั้งสองเป็นผลหารหารq = x/yด้วยจำนวนจุดลอยตัว ฉันสนใจวิธีการคืนเพดานแทน ยกตัวอย่างเช่นและceil(10/5)=2ceil(11/5)=3 วิธีการที่ชัดเจนเกี่ยวข้องกับสิ่งที่ชอบ: q = x / y; if (q * y < x) ++q; สิ่งนี้ต้องการการเปรียบเทียบและการคูณที่พิเศษ และวิธีการอื่น ๆ ที่ผมเคยเห็น (ใช้ในความเป็นจริง) เกี่ยวข้องกับการหล่อเป็นหรือfloat doubleมีวิธีที่ตรงกว่าที่จะหลีกเลี่ยงการเพิ่มการคูณ (หรือการหารที่สอง) และสาขาและหลีกเลี่ยงการร่ายเป็นเลขทศนิยมหรือไม่?
262 c++  c  algorithm  math 


11
แปลงถ่าน * เป็นมาตรฐาน :: สตริง
ฉันจำเป็นต้องใช้ในการจัดเก็บข้อมูลที่ดึงมาจากstd::string fgets()ในการทำเช่นนี้ฉันต้องแปลงchar*ค่าส่งคืนจากfgets()เป็นstd::stringเก็บในอาร์เรย์ สิ่งนี้สามารถทำได้?
262 c++  stdstring 


5
วิธีการโยนข้อยกเว้น C ++
ฉันมีความเข้าใจที่แย่มากเกี่ยวกับการจัดการข้อยกเว้น (เช่นวิธีการปรับแต่งการโยนลองจับคำแถลงเพื่อจุดประสงค์ของฉันเอง) ตัวอย่างเช่นฉันได้กำหนดฟังก์ชันดังนี้: int compare(int a, int b){...} ฉันต้องการให้ฟังก์ชันส่งข้อยกเว้นพร้อมข้อความบางข้อความเมื่อ a หรือ b เป็นลบ ฉันจะเข้าหาสิ่งนี้ในนิยามของฟังก์ชันได้อย่างไร?

21
คุณสร้างคำขอ HTTP ด้วย C ++ ได้อย่างไร
มีวิธีใดที่จะทำให้การร้องขอ HTTP ด้วย C ++ ง่ายขึ้นไหม โดยเฉพาะฉันต้องการดาวน์โหลดเนื้อหาของหน้า (API) และตรวจสอบเนื้อหาเพื่อดูว่ามันมี 1 หรือ 0 มันเป็นไปได้ไหมที่จะดาวน์โหลดเนื้อหาลงในสตริง
258 c++  httprequest 


7
การเติมข้อความอัตโนมัติใน Vim
สั้นฉันกำลังค้นหาคุณสมบัติการเติมข้อความอัตโนมัติที่ใช้งานได้สำหรับเครื่องมือแก้ไข Vim ฉันได้ถกเถียงกันมาก่อนว่า Vim แทนที่ IDE ภายใต้ Linux อย่างสมบูรณ์และแม้ว่ามันจะเป็นจริง แต่ก็ไม่มีคุณสมบัติที่สำคัญอย่างใดอย่างหนึ่ง: การเติมข้อความอัตโนมัติ ฉันรู้เกี่ยวกับCtrl+ N, บูรณาการเจริญงอกงาม ctags , Taglist , cppcompleteและOmniCppComplete อนิจจาสิ่งเหล่านี้ไม่ตรงกับคำอธิบายของฉันเกี่ยวกับ“ การเติมข้อความอัตโนมัติที่ทำงาน:” Ctrl+Nทำงานอย่าง (เท่านั้น) ถ้าคุณได้ forgotton วิธีการสะกดหรือclass whileโอ้ดี Ctagsให้ความรู้พื้นฐานแก่คุณ แต่มีข้อเสียมากมาย Taglistเป็นเพียงเสื้อคลุม Ctags และเป็นเช่นนั้นสืบทอดส่วนใหญ่ของข้อเสีย (แม้ว่ามันจะทำงานได้ดีสำหรับการประกาศรายการ ) cppcompleteใช้งานไม่ได้ตามที่สัญญาและฉันไม่สามารถเข้าใจได้ว่าฉันทำอะไรผิดหรือหาก "ทำงาน" ถูกต้องและข้อ จำกัด นั้นเกิดจากการออกแบบ OmniCppCompleteดูเหมือนจะมีปัญหาเช่นเดียวกับ cppcomplete เช่นการเติมข้อมูลอัตโนมัติไม่ทำงานอย่างถูกต้อง นอกจากนี้tagsไฟล์จะต้องได้รับการอัพเดตอีกครั้งด้วยตนเอง ฉันตระหนักถึงความจริงที่ว่าแม้แต่ IDE ที่ทันสมัยและเต็มไปด้วยลมหายใจนั้นก็ไม่ได้นำเสนอโค้ด C ++ ที่สมบูรณ์ นั่นเป็นเหตุผลที่ฉันยอมรับการขาด …
257 c++  vim  ide  autocomplete 

16
โยนข้อยกเว้นออกมาจากผู้ทำลาย
คนส่วนใหญ่บอกว่าจะไม่ส่งข้อยกเว้นใด ๆ จากผู้ทำลายล้างซึ่งส่งผลให้เกิดพฤติกรรมที่ไม่ได้กำหนด Stroustrup ทำให้จุดที่"เวกเตอร์ destructor อย่างชัดเจนเรียก destructor สำหรับทุกองค์ประกอบนี่ก็หมายความว่าถ้าองค์ประกอบ destructor โยนการทำลายเวกเตอร์ล้มเหลว ... ไม่มีวิธีที่ดีในการป้องกันข้อยกเว้นที่ถูกโยนจาก destructors ดังนั้นไลบรารี ทำให้ไม่มีการค้ำประกันถ้า destructor องค์ประกอบโยน"(จากภาคผนวก E3.2) บทความนี้ดูเหมือนจะพูดเป็นอย่างอื่น - การขว้างปา destructors นั้นไม่เป็นไร ดังนั้นคำถามของฉันคือ - หากการขว้างปาจาก destructor ส่งผลให้เกิดพฤติกรรมที่ไม่ได้กำหนดคุณจะจัดการกับข้อผิดพลาดที่เกิดขึ้นระหว่าง destructor ได้อย่างไร หากมีข้อผิดพลาดเกิดขึ้นในระหว่างการดำเนินการล้างข้อมูลคุณเพียงเพิกเฉยมันได้หรือไม่ หากเป็นข้อผิดพลาดที่สามารถจัดการสแต็กได้ แต่ไม่ถูกต้องใน destructor มันไม่เหมาะสมที่จะโยนข้อยกเว้นออกจาก destructor ใช่ไหม เห็นได้ชัดว่าข้อผิดพลาดประเภทนี้หายาก แต่เป็นไปได้

10
ทำไมแลมบ์ดาของ C ++ 11 ต้องการคำหลัก“ ไม่แน่นอน” สำหรับการจับภาพโดยค่าเริ่มต้น
ตัวอย่างสั้น ๆ : #include <iostream> int main() { int n; [&](){n = 10;}(); // OK [=]() mutable {n = 20;}(); // OK // [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda std::cout << n << "\n"; // "10" } คำถาม: ทำไมเราต้องการmutableคำหลัก มันค่อนข้างแตกต่างจากการส่งพารามิเตอร์แบบดั้งเดิมไปยังฟังก์ชั่นที่ตั้งชื่อ เหตุผลเบื้องหลังคืออะไร …
256 c++  lambda  c++11 

12
ตัวชี้กับการอ้างอิง
สิ่งที่จะเป็นการปฏิบัติที่ดีกว่าเมื่อให้ฟังก์ชันตัวแปรต้นฉบับเพื่อทำงานกับ: unsigned long x = 4; void func1(unsigned long& val) { val = 5; } func1(x); หรือ: void func2(unsigned long* val) { *val = 5; } func2(&x); IOW: มีเหตุผลอะไรไหมที่จะเลือกคนอื่น?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.