Avatar ·

كيفية تحويل std::string إلى const char* أو char* في C++؟

مرحباً بالجميع! لقد بدأت للتو في تعلم لغة C++ وواجهت مشكلة أثناء العمل مع السلاسل النصية. لدي متغير من نوع `std::string`، وأحتاج إلى تمريره إلى دالة تتوقع `const char*` أو `char*`. على سبيل المثال، أحاول فتح ملف باستخدام الدالة `fopen()`، لكنها لا تقبل `std::string`. إليك الكود الخاص بي: ```cpp #include #include #include int main() { std::string filename = "data.txt"; FILE* file = fopen(filename, "r"); // خطأ في الترجمة! if (file) { std::cout << "تم فتح الملف بنجاح" << std::endl; fclose(file); } return 0; } ``` المترجم يعطي خطأ: `cannot convert 'std::string' to 'const char*'`. أفهم أن `std::string` و `const char*` هما نوعان مختلفان، لكن كيف يمكن تحويلهما؟ جربت ببساطة تعيين `const char* str = filename;` — ولم يعمل أيضاً. سؤال آخر: هل يمكن الحصول على `char*` قابل للتعديل من `std::string`؟ في بعض واجهات API القديمة، يُطلب تحديداً `char*`،