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

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

3
A () = A () - ทำไมถึงรวบรวม?
class A {}; int main() { A() = A(); return 0; } ทำไมโค้ดนี้จึงคอมไพล์ ไม่ควรมีข้อผิดพลาดที่ทางด้านซ้ายของตัวดำเนินการกำหนดค่าควรวาง lvalue? A () lvalue คืออะไร? g ++ 4.7 เวอร์ชัน
85 c++ 

3
ความแตกต่างอย่างมาก (x9) ในเวลาดำเนินการระหว่างโค้ดที่เหมือนกันเกือบทั้งหมดใน C และ C ++
ฉันพยายามแก้แบบฝึกหัดนี้จาก www.spoj.com: FCTRL - Factorial คุณไม่จำเป็นต้องอ่านจริงๆแค่ทำถ้าคุณอยากรู้ :) ก่อนอื่นฉันติดตั้งในC ++ (นี่คือวิธีแก้ปัญหาของฉัน): #include <iostream> using namespace std; int main() { unsigned int num_of_inputs; unsigned int fact_num; unsigned int num_of_trailing_zeros; std::ios_base::sync_with_stdio(false); // turn off synchronization with the C library’s stdio buffers (from https://stackoverflow.com/a/22225421/5218277) cin >> num_of_inputs; while (num_of_inputs--) { cin >> fact_num; num_of_trailing_zeros …
85 c++  c  performance  gcc  iostream 

1
ใช้ Maven สำหรับโปรเจ็กต์ C / C ++
ฉันกำลังวาง Maven ไว้รอบ ๆ กลุ่มมือสมัครเล่นเขียนไม่ดีและตรงไปตรงมา - รหัส C / C ++ ดั้งเดิม (หมายถึง C บางตัว C ++ บางตัว) ปัญหาคือ - มีสินค้าหมุนเวียนอยู่มากมายและไม่สามารถเปลี่ยนใหม่ได้ง่ายๆ การสร้างมันต้องใช้ความรู้เกี่ยวกับชนเผ่าจำนวนมาก (คุณต้องเปลี่ยนจากคิวบ์ไปยังคิวบ์เพื่อค้นหาวิธีรวบรวม / สร้างชิ้นส่วนต่างๆ) และการปลดปล่อยนั้นเป็นฝันร้ายทั้งหมด (ไม่ - ฉันจะไม่เขียนมันใหม่โปรดอย่าถาม) คำถามของฉันคือ - ฉันควรใช้maven-native-pluginเพื่อแทนที่ makefiles สั้น ๆ จำนวนมากหรือใช้exec-maven-pluginเพื่อดำเนินการเหล่านี้? ฉันมีประสบการณ์ที่ดีมากกับการทำ. NET และไม่รู้ว่าฉันควรลงทุนกับnativeปลั๊กอินหรืออยู่กับexec? หากคุณเคยมีประสบการณ์กับ C / C ++ "Mavenizing" ฉันยินดีที่จะรับคำแนะนำ

9
ตัวบันทึก C ++ ที่ปลอดภัยที่สุดสำหรับเธรดคืออะไร? [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังทำงานกับแอปพลิเคชันมัลติเธรดที่สำคัญด้านประสิทธิภาพ ฉันดูการบันทึก rlog, Ace และ Boost ฉันเลือก rlog เพราะฉันอ่านว่าเร็วที่สุด (เมื่อปิดใช้งานการบันทึกจะมีค่าใช้จ่ายน้อยที่สุด) ปัญหาที่ฉันมีคือมันแสดงชื่อไฟล์หมายเลขบรรทัด ฯลฯ แม้ในโหมดรีลีส หากคุณสามารถบอกวิธีปิดข้อมูลนั้นได้ปัญหาของฉันอาจได้รับการแก้ไข ไม่ว่าในกรณีใดตัวบันทึกที่มีประสิทธิภาพสูงสุดใน C ++ สำหรับสถานการณ์ของฉันคืออะไร?
85 c++  logging 

19
เข้ารหัส / ถอดรหัส URL ใน C ++ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ไม่มีใครรู้รหัส C ++ ที่ดีที่ทำสิ่งนี้?

10
มีเหตุผลใดที่ต้องใช้คีย์เวิร์ด 'auto' ใน C ++ 03?
โปรดทราบว่าคำถามนี้ถูกโพสต์ครั้งแรกในปี 2009 ก่อนที่ C ++ 11 จะได้รับการให้สัตยาบันและก่อนที่ความหมายของautoคำหลักจะเปลี่ยนไปอย่างมาก คำตอบที่มีให้เกี่ยวข้องเพียงไปที่ C ++ 03 ความหมายของauto- ที่ถูกชั้นจัดเก็บข้อมูลที่ระบุไว้ - และไม่ c ++ 11 ความหมายของauto- ว่าการหักชนิดอัตโนมัติ หากคุณกำลังมองหาคำแนะนำว่าควรใช้ C ++ 11 เมื่อautoใดคำถามนี้ไม่เกี่ยวข้องกับคำถามนั้น เป็นเวลานานที่สุดที่ฉันคิดว่าไม่มีเหตุผลที่จะใช้staticคีย์เวิร์ดใน C เนื่องจากตัวแปรที่ประกาศนอกขอบเขตการบล็อกนั้นมีผลทั่วโลก จากนั้นฉันค้นพบว่าการประกาศตัวแปรstaticภายในขอบเขตบล็อกจะให้ระยะเวลาถาวรและการประกาศนอกขอบเขตบล็อก (ในขอบเขตโปรแกรม) จะทำให้ขอบเขตไฟล์ (สามารถเข้าถึงได้ในหน่วยคอมไพล์นั้นเท่านั้น) ดังนั้นสิ่งนี้ทำให้ฉันมีคำหลักเพียงคำเดียวที่ฉัน (อาจ) ยังไม่เข้าใจทั้งหมด: autoคำหลัก มีความหมายอื่นนอกเหนือจาก 'ตัวแปรท้องถิ่นหรือไม่? สิ่งใดที่ไม่ได้ทำโดยปริยายสำหรับคุณทุกที่ที่คุณต้องการใช้? อย่างไรautoตัวแปรปฏิบัติตนในขอบเขตโปรแกรม? อะไรคือstatic autoตัวแปรในขอบเขตไฟล์? คำหลักนี้มีจุดประสงค์อื่นนอกเหนือจากที่มีอยู่เพื่อความสมบูรณ์หรือไม่?
85 c++  keyword  c++03 

9
เหตุใด Math.pow (0, 0) === 1
เราทุกคนรู้ดีว่า 0 0นั้นไม่แน่นอน แต่ , จาวาสคริปต์กล่าวว่า: Math.pow(0, 0) === 1 // true และC ++พูดในสิ่งเดียวกัน: pow(0, 0) == 1 // true ทำไม? ฉันรู้แล้ว: >Math.pow(0.001, 0.001) 0.9931160484209338 แต่ทำไมการMath.pow(0, 0)โยนไม่มีข้อผิดพลาด? หรืออาจจะดีกว่าNaN1

2
ฟังก์ชันเวอร์ชันอินไลน์จะส่งคืนค่าที่แตกต่างจากเวอร์ชันที่ไม่ใช่แบบอินไลน์
ฟังก์ชันเดียวกันสองเวอร์ชันจะแตกต่างกันได้อย่างไรในเวอร์ชันหนึ่งที่เป็นแบบอินไลน์และฟังก์ชันอื่นจะไม่คืนค่าที่ต่างกัน นี่คือโค้ดบางส่วนที่ฉันเขียนในวันนี้และฉันไม่แน่ใจว่ามันทำงานอย่างไร #include <cmath> #include <iostream> bool is_cube(double r) { return floor(cbrt(r)) == cbrt(r); } bool inline is_cube_inline(double r) { return floor(cbrt(r)) == cbrt(r); } int main() { std::cout << (floor(cbrt(27.0)) == cbrt(27.0)) << std::endl; std::cout << (is_cube(27.0)) << std::endl; std::cout << (is_cube_inline(27.0)) << std::endl; } ฉันคาดหวังว่าเอาต์พุตทั้งหมดจะเท่ากับ1แต่จริงๆแล้วเอาต์พุตนี้ (g ++ 8.3.1 …
85 c++ 

4
มันถูกกฎหมายหรือไม่สำหรับซอร์สโค้ดที่มีพฤติกรรมที่ไม่ได้กำหนดเพื่อทำให้คอมไพลเลอร์พัง?
สมมติว่าฉันไปรวบรวมซอร์สโค้ด C ++ ที่เขียนไม่ดีซึ่งเรียกใช้พฤติกรรมที่ไม่ได้กำหนดดังนั้น (ตามที่พวกเขาพูด) "อะไรก็เกิดขึ้นได้" จากมุมมองของข้อกำหนดภาษา C ++ ที่เห็นว่ายอมรับได้ในคอมไพเลอร์ "conformant" ทำ "อะไรก็ได้" ในสถานการณ์นี้รวมถึงคอมไพเลอร์ที่ขัดข้อง (หรือขโมยรหัสผ่านของฉันหรือทำงานผิดพลาดหรือเกิดข้อผิดพลาดในเวลาคอมไพล์) หรือเป็น ขอบเขตของพฤติกรรมที่ไม่ได้กำหนด จำกัด เฉพาะสิ่งที่สามารถเกิดขึ้นได้เมื่อเรียกใช้งานผลลัพธ์

4
ปิดการใช้งานคำเตือน GCC เฉพาะบางส่วนของหน่วยการแปลหรือไม่
GCC ที่ใกล้เคียงที่สุดเทียบเท่ากับรหัสตัวประมวลผลล่วงหน้า MSVC นี้คืออะไร #pragma warning( push ) // Save the current warning state. #pragma warning( disable : 4723 ) // C4723: potential divide by 0 // Code which would generate warning 4723. #pragma warning( pop ) // Restore warnings to previous state. เรามีโค้ดในส่วนหัวที่รวมอยู่ทั่วไปซึ่งเราไม่ต้องการสร้างคำเตือนที่เฉพาะเจาะจง อย่างไรก็ตามเราต้องการให้ไฟล์ที่มีส่วนหัวเหล่านั้นสร้างคำเตือนนั้นต่อไป (หากโปรเจ็กต์เปิดใช้งานคำเตือนนั้น)

1
ฉันสามารถใช้ใบอนุญาต Qt LGPL และขายแอปพลิเคชันของฉันโดยไม่มีข้อ จำกัด ใด ๆ ได้หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน8 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันต้องการเริ่มโครงการข้ามแพลตฟอร์ม ฉันมีงานวิจัยและตอนนี้ฉันเกือบแน่ใจแล้วว่า Qt เป็นข้อตกลงที่ถูกต้อง : มีอุปสรรคใหญ่อยู่ที่นี่แม้ว่าการออกใบอนุญาต ฉันต้องการขายโครงการและไม่ต้องการให้แหล่งที่มาที่เกี่ยวข้องกับงานของฉันหรือจ่ายค่าใบอนุญาต ฉันตรวจสอบและสังเกตว่า Qt มีทั้งโซลูชันเชิงพาณิชย์และโอเพ่นซอร์ส ฉันเคยได้ยินคำพูดที่ขัดแย้งกันมากเกินไปเกี่ยวกับการออกใบอนุญาต Qt ซึ่งทำให้ฉันสับสนมาก บางคนบอกว่าแม้ว่าฉันจะใช้ Qt เวอร์ชัน LGPL แต่ฉันก็ยังต้องส่งรหัสของฉัน นี่คือเรื่องจริง? ใครสามารถให้คำอธิบายง่ายๆเกี่ยวกับใบอนุญาต Qt และบอกฉันว่าฉันสามารถขายใบสมัครของฉันโดยไม่มีข้อ จำกัด ใด ๆ เลยได้หรือไม่? ใครช่วยบอกฉันว่าเทียบเท่ากับ Qt สำหรับการพัฒนาข้ามแพลตฟอร์มโดยไม่มีข้อ จำกัด ใด ๆ
85 c++  qt  licensing 

6
รับมาตรฐาน :: ifstream เพื่อจัดการ LF, CR และ CRLF หรือไม่
ฉันสนใจistream& getline ( istream& is, string& str );โดยเฉพาะ มีตัวเลือกสำหรับตัวสร้าง ifstream เพื่อบอกให้แปลงการเข้ารหัสบรรทัดใหม่ทั้งหมดเป็น '\ n' ภายใต้ประทุนหรือไม่ ฉันต้องการที่จะสามารถโทรgetlineและให้มันจัดการกับจุดสิ้นสุดของบรรทัดทั้งหมดได้อย่างสง่างาม อัปเดต : เพื่อความชัดเจนฉันต้องการที่จะสามารถเขียนโค้ดที่รวบรวมได้เกือบทุกที่และจะรับข้อมูลจากเกือบทุกที่ รวมถึงไฟล์หายากที่มี "\ r" โดยไม่มี "\ n" ลดความไม่สะดวกสำหรับผู้ใช้ซอฟต์แวร์ใด ๆ เป็นเรื่องง่ายที่จะแก้ไขปัญหานี้ แต่ฉันยังคงสงสัยเกี่ยวกับวิธีที่ถูกต้องในมาตรฐานเพื่อจัดการกับรูปแบบไฟล์ข้อความทั้งหมดได้อย่างยืดหยุ่น getlineอ่านเป็นบรรทัดเต็มถึง '\ n' เป็นสตริง '\ n' ถูกใช้จากสตรีม แต่ getline ไม่รวมไว้ในสตริง จนถึงตอนนี้ แต่อาจมี "\ r" อยู่ก่อนหน้า "\ n" ที่รวมอยู่ในสตริง มีสามประเภทของการสิ้นสุดบรรทัดที่เห็นในไฟล์ข้อความ: '\ n' คือการลงท้ายแบบเดิมบนเครื่อง …
85 c++  ifstream  newline 

4
C ++ 11 ตัวแปร thread_local คงที่โดยอัตโนมัติหรือไม่
มีความแตกต่างระหว่างส่วนรหัสทั้งสองนี้หรือไม่: void f() { thread_local vector<int> V; V.clear(); ... // use V as a temporary variable } และ void f() { static thread_local vector<int> V; V.clear(); ... // use V as a temporary variable } Backstory: เดิมทีฉันมีเวกเตอร์ STATIC V (สำหรับการเก็บค่ากลางบางค่ามันจะถูกล้างทุกครั้งที่ฉันเข้าสู่ฟังก์ชัน) และโปรแกรมเธรดเดียว ฉันต้องการเปลี่ยนโปรแกรมให้เป็นโปรแกรมมัลติเธรดดังนั้นฉันต้องกำจัดตัวปรับคงที่นี้ออกไป ความคิดของฉันคือเปลี่ยนค่าคงที่ทั้งหมดให้เป็น thread_local และไม่ต้องกังวลกับสิ่งอื่นใด วิธีนี้สามารถย้อนกลับได้หรือไม่?

1
การเข้ารหัส Unicode สำหรับตัวอักษรสตริงใน C ++ 11
จากคำถามที่เกี่ยวข้องฉันต้องการถามเกี่ยวกับอักขระใหม่และประเภทลิเทอรัลสตริงใน C ++ 11 ดูเหมือนว่าตอนนี้เรามีอักขระสี่ประเภทและตัวอักษรสตริงห้าประเภท ประเภทอักขระ: char a = '\x30'; // character, no semantics wchar_t b = L'\xFFEF'; // wide character, no semantics char16_t c = u'\u00F6'; // 16-bit, assumed UTF16? char32_t d = U'\U0010FFFF'; // 32-bit, assumed UCS-4 และตัวอักษรสตริง: char A[] = "Hello\x0A"; // byte string, "narrow encoding" wchar_t …

11
รับชื่อไดเร็กทอรีจากชื่อไฟล์
ฉันมีชื่อไฟล์ (C: \ folder \ foo.txt) และฉันต้องการเรียกชื่อโฟลเดอร์ (C: \ folder) ใน C ++ ที่ไม่มีการจัดการ ใน C # ฉันจะทำสิ่งนี้: string folder = new FileInfo("C:\folder\foo.txt").DirectoryName; มีฟังก์ชันที่สามารถใช้ใน C ++ ที่ไม่มีการจัดการเพื่อแยกเส้นทางจากชื่อไฟล์ได้หรือไม่?
85 c++  file  directory 

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