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

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

7
ฉันควรใช้การลดชนิดการส่งคืนอัตโนมัติ C ++ 14 เมื่อใด
ด้วยการเปิดตัว GCC 4.8.0 เรามีคอมไพเลอร์ที่รองรับการหักค่าส่งคืนชนิดอัตโนมัติซึ่งเป็นส่วนหนึ่งของ C ++ 14 ด้วย-std=c++1yฉันสามารถทำสิ่งนี้: auto foo() { //deduced to be int return 5; } คำถามของฉันคือ: ฉันควรใช้คุณสมบัตินี้เมื่อใด เมื่อใดที่จำเป็นและเมื่อใดที่ต้องทำให้รหัสสะอาดขึ้น สถานการณ์ 1 สถานการณ์แรกที่ฉันนึกได้คือเมื่อเป็นไปได้ ทุกฟังก์ชั่นที่สามารถเขียนด้วยวิธีนี้ควรจะเป็น ปัญหาเกี่ยวกับสิ่งนี้คือมันอาจไม่ทำให้โค้ดอ่านง่ายขึ้นเสมอไป สถานการณ์ที่ 2 สถานการณ์ต่อไปคือการหลีกเลี่ยงประเภทการคืนที่ซับซ้อนมากขึ้น เป็นตัวอย่างที่เบามาก: template<typename T, typename U> auto add(T t, U u) { //almost deduced as decltype(t + u): decltype(auto) would return t …

7
std :: อินพุต cin พร้อมช่องว่าง?
#include <string> std::string input; std::cin >> input; ผู้ใช้ต้องการป้อน "Hello World" แต่cinล้มเหลวที่ช่องว่างระหว่างสองคำ ฉันจะcinลงมือทำทั้งหมดได้Hello Worldอย่างไร จริง ๆ แล้วฉันกำลังทำสิ่งนี้กับ structs และcin.getlineดูเหมือนจะไม่ทำงาน นี่คือรหัสของฉัน: struct cd { std::string CDTitle[50]; std::string Artist[50]; int number_of_songs[50]; }; std::cin.getline(library.number_of_songs[libNumber], 250); นี่ทำให้เกิดข้อผิดพลาด ความคิดใด ๆ
144 c++  string  space 

3
ประกาศเพื่อนใน C ++ - ความแตกต่างระหว่างสาธารณะและส่วนตัว
มีความแตกต่างระหว่างการประกาศฟังก์ชั่นเพื่อน / ชั้นเป็นส่วนตัวหรือสาธารณะ? ฉันดูเหมือนจะไม่พบอะไรเกี่ยวกับเรื่องนี้ทางออนไลน์ ฉันหมายถึงความแตกต่างระหว่าง: class A { public: friend class B; }; และ class A { private: //or nothing as the default is private friend class B; }; มีความแตกต่างหรือไม่?
144 c++  private  friend  public 

5
ไวยากรณ์ใหม่“ = default” ใน C ++ 11
ฉันไม่เข้าใจว่าทำไมฉันถึงทำสิ่งนี้: struct S { int a; S(int aa) : a(aa) {} S() = default; }; ทำไมไม่พูดว่า: S() {} // instead of S() = default; ทำไมต้องนำไวยากรณ์ใหม่มาใช้
144 c++  c++11 

11
วิธีรับข้อความแสดงข้อผิดพลาดจากรหัสข้อผิดพลาดที่ GetLastError () ส่งคืน
หลังจากการเรียกใช้ Windows API ฉันจะรับข้อความแสดงข้อผิดพลาดล่าสุดในรูปแบบข้อความได้อย่างไร GetLastError() ส่งคืนค่าจำนวนเต็มไม่ใช่ข้อความ
144 c++  c  winapi 

14
มีข้อเสียในการประกาศตัวแปรที่มี auto ใน C ++ หรือไม่
ดูเหมือนว่าautoเป็นคุณสมบัติที่มีความสำคัญพอสมควรที่จะเพิ่มใน C ++ 11 ที่ดูเหมือนว่าจะเป็นไปตามภาษาที่ใหม่กว่ามากมาย เช่นเดียวกับภาษาอย่าง Python ฉันไม่เคยเห็นการประกาศตัวแปรที่ชัดเจน (ฉันไม่แน่ใจว่ามันเป็นไปได้โดยใช้มาตรฐาน Python หรือไม่) มีข้อเสียเปรียบในการใช้autoประกาศตัวแปรแทนที่จะประกาศอย่างชัดเจนหรือไม่?

5
ข้อดีของ Antlr (เทียบกับ lex / yacc / bison) [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันเคยใช้ lex และ yacc (มักจะเป็นวัวกระทิง) ในอดีตสำหรับโครงการต่าง ๆ โดยทั่วไปแล้วนักแปล (เช่นกลุ่มย่อยของ EDIF ที่สตรีมไปยังแอป EDA) นอกจากนี้ฉันต้องสนับสนุนรหัสตามไวยากรณ์ lex / yacc ย้อนหลังไปหลายสิบปี ดังนั้นฉันรู้วิธีของฉันรอบ ๆ เครื่องมือแม้ว่าฉันไม่มีผู้เชี่ยวชาญ ฉันเคยเห็นความคิดเห็นเชิงบวกเกี่ยวกับ Antlr ในเวทีต่าง ๆ ในอดีตและฉันอยากรู้ว่าสิ่งที่ฉันอาจจะหายไป ดังนั้นหากคุณใช้ทั้งคู่โปรดบอกฉันว่ามีอะไรที่ดีกว่าหรือสูงกว่าใน Antlr ข้อ จำกัด ในปัจจุบันของฉันคือฉันทำงานในร้าน C ++ และผลิตภัณฑ์ใด ๆ ที่เราจัดส่งจะไม่รวม Java ดังนั้นตัวแยกวิเคราะห์ผลลัพธ์จะต้องปฏิบัติตามกฎนั้น
143 c++  antlr  yacc  bison 

7
ทำไมฉันไม่สามารถคัดออกสตริง?
ทำไมฉันไม่cout stringชอบสิ่งนี้: string text ; text = WordList[i].substr(0,20) ; cout << "String is : " << text << endl ; เมื่อฉันทำสิ่งนี้ฉันได้รับข้อผิดพลาดต่อไปนี้: ข้อผิดพลาด 2 ข้อผิดพลาด C2679: ไบนารี '<<': ไม่พบตัวดำเนินการที่ใช้ตัวถูกดำเนินการทางขวาของประเภท 'std :: string' (หรือไม่มีการแปลงที่ยอมรับได้) c: \ users \ mollasadra \ Documents \ visual studio 2008 \ โครงการ \ barnamec \ barnamec \ …
143 c++  string  cout 


16
C ++ Redefinition Header Files (winsock2.h)
ฉันจะป้องกันไม่ให้รวมไฟล์ส่วนหัวสองครั้งได้อย่างไร ปัญหาคือฉันรวมถึงในMyClass.hจากนั้นฉันรวมMyClass.hในหลายไฟล์ดังนั้นจึงมีหลายครั้งและเกิดข้อผิดพลาดในการกำหนดใหม่ วิธีการป้องกัน ฉันใช้ #pragma เพียงครั้งเดียวแทนที่จะใช้ยามและฉันเดาว่าไม่เป็นไร MyClass.h: // MyClass.h #pragma once #include <winsock2.h> class MyClass { // methods public: MyClass(unsigned short port); virtual ~MyClass(void); }; แก้ไข:ข้อผิดพลาดเล็กน้อยที่ฉันได้รับ c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(91) : warning C4005: 'AF_IPX' : macro redefinition c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(460) : see previous definition of 'AF_IPX' c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(124) : warning …
143 c++  header  redefinition 

10
วัตถุประสงค์ของคำหลัก“ สุดท้าย” ใน C ++ 11 สำหรับฟังก์ชั่นคืออะไร?
วัตถุประสงค์ของfinalคำสำคัญใน C ++ 11 สำหรับฟังก์ชั่นคืออะไร? ฉันเข้าใจว่ามันป้องกันการแทนที่ฟังก์ชั่นโดยคลาสที่ได้รับ แต่ถ้าเป็นกรณีนี้มันไม่เพียงพอที่จะประกาศว่าไม่ใช่finalฟังก์ชันของคุณใช่หรือไม่ มีสิ่งอื่นอีกไหมที่ฉันหายไปที่นี่
143 c++  c++11  final 

4
TensorFlow ทำไมไพ ธ อนถึงภาษาที่เลือก?
ฉันเพิ่งเริ่มศึกษาการเรียนรู้อย่างลึกซึ้งและเทคนิค ML อื่น ๆ และฉันเริ่มค้นหากรอบที่ทำให้กระบวนการสร้างเน็ตและการฝึกอบรมนั้นง่ายขึ้นจากนั้นฉันพบ TensorFlow ซึ่งมีประสบการณ์น้อยในสนามสำหรับฉันดูเหมือนว่าความเร็วนั้นเป็น ปัจจัยใหญ่สำหรับการสร้างระบบ ML ที่ยิ่งใหญ่กว่าหากทำงานกับการเรียนรู้อย่างลึกซึ้งดังนั้นทำไม Google จึงเลือก python ให้สร้าง TensorFlow มันจะดีกว่าไหมถ้าจะทำให้มันเหนือภาษาที่สามารถรวบรวมและไม่ตีความ? ข้อดีของการใช้ Python เหนือภาษาอย่าง C ++ สำหรับการเรียนรู้ของเครื่องคืออะไร

11
การแปลงสตริง int เป็น std ::
เป็นวิธีที่สั้นที่สุดโดยเฉพาะอย่างยิ่งแบบอินไลน์สามารถแปลง int เป็นสตริงได้อย่างไร คำตอบที่ใช้ stl และเพิ่มจะได้รับการต้อนรับ
143 c++  string  int 

14
ฟังก์ชัน lambda แบบเรียกซ้ำใน C ++ 11
ฉันใหม่กับ C ++ 11 ฉันกำลังเขียนฟังก์ชั่นแลมบ์ดาแบบเรียกซ้ำ แต่มันไม่ได้รวบรวม sum.cpp #include <iostream> #include <functional> auto term = [](int a)->int { return a*a; }; auto next = [](int a)->int { return ++a; }; auto sum = [term,next,&sum](int a, int b)mutable ->int { if(a>b) return 0; else return term(a) + sum(next(a),b); }; int main(){ std::cout<<sum(1,10)<<std::endl; …
143 c++  c++11  lambda 

2
ความสำคัญของแฟล็ก -pthread เมื่อรวบรวม
ในโปรเจ็กต์ C และ C ++ แบบมัลติเธรดที่หลากหลายฉันได้เห็นการ-pthreadตั้งค่าสถานะที่ใช้กับทั้งการคอมไพล์และการเชื่อมโยงสเตจในขณะที่คนอื่นไม่ได้ใช้เลยและผ่าน-lpthreadไปยังสเตจลิงก์ มีอันตรายใดบ้างที่ไม่ได้รวบรวมและเชื่อมโยงกับ-pthreadธง - นั่นคือสิ่งที่จะ-pthreadทำจริง ๆ ? ฉันสนใจแพลตฟอร์ม Linux เป็นหลัก
143 c++  c  linux  pthreads 

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