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

std :: string คือประเภท "string" ที่อิงตามไบต์ของไลบรารีมาตรฐาน C ++ ซึ่งกำหนดไว้ในส่วนหัว <string>

30
วิธีที่ดีที่สุดในการตัด std :: string คืออะไร?
ขณะนี้ฉันใช้รหัสต่อไปนี้เพื่อตัดทั้งหมดstd::stringsในโปรแกรมของฉัน: std::string s; s.erase(s.find_last_not_of(" \n\r\t")+1); มันใช้งานได้ดี แต่ฉันสงสัยว่ามีบางกรณีที่อาจล้มเหลวหรือไม่? แน่นอนว่าคำตอบของทางเลือกที่หรูหราและวิธีการแก้ปัญหาด้านซ้ายก็ยินดีต้อนรับ
812 c++  trim  stdstring 




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

4
เป็นไปได้ไหมที่จะใช้ std :: string ใน constexpr
โดยใช้ C ++ 11, อูบุนตู 14.04, toolchain รหัสนี้ล้มเหลว: constexpr std::string constString = "constString"; ข้อผิดพลาด: ประเภท 'สตริง const {aka const std :: basic_string}' ของตัวแปร constexpr 'constString' ไม่ใช่ตัวอักษร ... เพราะ ... 'std :: basic_string' มี destructor ที่ไม่สำคัญ เป็นไปได้ที่จะใช้std::stringในconstexpr? (เห็นได้ชัดว่าไม่ใช่ ... ) ถ้าเป็นเช่นนั้นได้อย่างไร มีวิธีอื่นในการใช้สตริงอักขระในconstexpr?

7
ความถูกต้องตามกฎหมายของ COW std :: การใช้สตริงใน C ++ 11
เป็นความเข้าใจของฉันที่ว่าการคัดลอกเมื่อเขียนไม่ใช่วิธีที่เป็นไปได้std::stringในการนำการปฏิบัติตามC ++ 11 มาใช้ แต่เมื่อมีการอภิปรายเมื่อเร็ว ๆ นี้ฉันพบว่าตัวเองไม่สามารถสนับสนุนคำพูดนั้นได้โดยตรง ฉันถูกต้องหรือไม่ที่ C ++ 11 ไม่ยอมรับการใช้งาน COW ของstd::string? หากเป็นเช่นนั้นข้อ จำกัด นี้มีการระบุไว้อย่างชัดเจนในมาตรฐานใหม่ (ที่ไหน) หรือไม่? หรือข้อ จำกัด นี้โดยนัยในแง่ที่ว่ามันเป็นผลรวมของความต้องการใหม่ในติ๊ดว่าการดำเนินการตามวัวของstd::string std::stringในกรณีนี้ฉันสนใจในบทและรูปแบบกลอนที่มาของ 'C ++ 11 ห้ามใช้std::stringงานCOW อย่างมีประสิทธิภาพ'


6
วิธีแปลง std :: string เป็น NSString
สวัสดีฉันพยายามที่จะแปลงมาตรฐานstd::stringเป็นNSStringแต่ฉันไม่ได้มีโชคดีมาก ฉันสามารถแปลงจาก an NSStringเป็น a ได้สำเร็จstd::stringด้วยรหัสต่อไปนี้ NSString *realm = @"Hollywood"; std::string REALM = [realm cStringUsingEncoding:[NSString defaultCStringEncoding]]; อย่างไรก็ตามฉันได้รับข้อผิดพลาดเกี่ยวกับเวลาคอมไพล์เมื่อฉันลองทำสิ่งต่อไปนี้ NSString *errorMessage = [NSString stringWithCString:REALM encoding:[NSString defaultCStringEncoding]]; ข้อผิดพลาดที่ฉันได้รับคือ Cannot convert 'std::string' to 'const char*' in argument passing ฉันขาดอะไรที่นี่? ขอบคุณล่วงหน้า.


11
คุณสร้างสตริง std :: ด้วย null ฝังได้อย่างไร
หากฉันต้องการสร้าง std :: string ด้วยบรรทัดเช่น: std::string my_string("a\0b"); โดยที่ฉันต้องการให้มีอักขระสามตัวในสตริงผลลัพธ์ (a, null, b) ฉันจะได้เพียงตัวเดียว ไวยากรณ์ที่เหมาะสมคืออะไร?
89 c++  null  stdstring 

4
การเชื่อมสตริงไม่ทำงานตามที่คาดไว้ [ปิด]
มันยากที่จะบอกว่ากำลังถามอะไรที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือมีวาทศิลป์และไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันรู้ว่ามันเป็นปัญหาทั่วไป แต่กำลังมองหาข้อมูลอ้างอิงและข้อมูลอื่น ๆ ฉันไม่พบคำตอบที่ชัดเจนสำหรับคำถามนี้ พิจารณารหัสต่อไปนี้: #include &lt;string&gt; // ... // in a method std::string a = "Hello "; std::string b = "World"; std::string c = a + b; คอมไพเลอร์บอกฉันว่าไม่พบตัวดำเนินการที่โอเวอร์โหลดสำหรับchar[dim]. หมายความว่าในสตริงไม่มีตัวดำเนินการ + หรือไม่? แต่ในหลายตัวอย่างมีสถานการณ์เช่นนี้ หากนี่ไม่ใช่วิธีที่ถูกต้องในการต่อสตริงเพิ่มเติมวิธีที่ดีที่สุดคืออะไร?

2
ทำไม `std :: string :: find ()` ไม่ส่งคืนตัววนซ้ำสุดท้ายเมื่อความล้มเหลว?
ฉันพบว่าพฤติกรรมของstd::string::findไม่สอดคล้องกับคอนเทนเนอร์ C ++ มาตรฐาน เช่น std::map&lt;int, int&gt; myMap = {{1, 2}}; auto it = myMap.find(10); // it == myMap.end() แต่สำหรับสตริง std::string myStr = "hello"; auto it = myStr.find('!'); // it == std::string::npos ทำไมไม่ควรล้มเหลวในmyStr.find('!')การกลับมาmyStr.end()แทนstd::string::npos? เนื่องจากstd::stringค่อนข้างจะพิเศษเมื่อเทียบกับตู้คอนเทนเนอร์อื่น ๆ ฉันสงสัยว่ามีเหตุผลจริง ๆ อยู่เบื้องหลังสิ่งนี้หรือไม่ (น่าแปลกที่ฉันไม่พบใครซักคนที่นี่)


1
การเปรียบเทียบ std :: string และสตริงตัวอักษรสไตล์ C
สมมติว่าฉันมีรหัสต่อไปนี้: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; using namespace std; // or std:: int main() { string s1{ "Apple" }; cout &lt;&lt; boolalpha; cout &lt;&lt; (s1 == "Apple") &lt;&lt; endl; //true } คำถามของฉันคือ: ระบบตรวจสอบระหว่างสองสิ่งนี้อย่างไร s1เป็นวัตถุในขณะที่"Apple"เป็นตัวอักษรสตริงสไตล์ C เท่าที่ฉันรู้ชนิดข้อมูลที่แตกต่างไม่สามารถเปรียบเทียบได้ ฉันหายไปนี่อะไร

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