كيفية تحويل 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*`،