View Full Version : تبدیل \ به \\ در مسیر فایل
JalaliMehr
چهارشنبه 12 آبان 1389, 14:58 عصر
سلام .
چطور می تونیم مسیر فایل که تو یک متغیر رشته ای قرار داره مثل :c:\folder1\file2.txt رو به فرمت قابل قبول c:\\folder1\\file2.txt تبدیل کنم یعنی \ ها به \\ تبدیل بشن.
shecarchi
چهارشنبه 12 آبان 1389, 15:17 عصر
میتونی از علامت @ پشت رشته استفاده کنی
r00tkit
چهارشنبه 12 آبان 1389, 16:16 عصر
میتونی از علامت @ پشت رشته استفاده کنی
نمی دونم منظورت از پشت رشته چیه ولی تو C# از @ در بیرون از رشته استفاده می شه در c/c++ در داخل رشته بعد از "
pswin.pooya
چهارشنبه 12 آبان 1389, 17:43 عصر
چطور می تونیم مسیر فایل که تو یک متغیر رشته ای قرار داره مثل :c:\folder1\file2.txt رو به فرمت قابل قبول c:\\folder1\\file2.txt تبدیل کنم یعنی \ ها به \\ تبدیل بشن.
فکر نکنم نیازی به این کار باشه. اینکار فقط برای کد هستش که برای فرار از دست کاراکتر \ هستش که حرف بعدی رو به شکل خاصی تفصیر میکنه مثلا \t به تب تبدیل میشه. اما زمان run-time به این مورد نیازی نیستش. با این حال میتونی یه تابع replace بنویسی که اینکار رو انجام بده
shecarchi
چهارشنبه 12 آبان 1389, 17:51 عصر
خوب اگه از اون علامته استفاده کنی مسیر به صورت متداول هم پذیرفته میشه . دیگه هم لازم نیست بک اسلش اضافی بزاری . فقط کافیه یه تابع بنویسی که این کاررو انجام بده
mehdi.mousavi
چهارشنبه 12 آبان 1389, 18:29 عصر
سلام . چطور می تونیم مسیر فایل که تو یک متغیر رشته ای قرار داره مثل :c:\folder1\file2.txt رو به فرمت قابل قبول c:\\folder1\\file2.txt تبدیل کنم یعنی \ ها به \\ تبدیل بشن.
سلام.
به این کد توجه کنید:
TCHAR szPath[MAX_PATH] = _T("c:\folder1\file2.txt");
اینجا، چون یه دونه \ داره و خیلی تصادفی حرف بعدی f بوده، در نتیجه Compiler اونو \f یا Form Feed (یعنی کاراکتر با کد 0xc یا همون 12 دسیمال) در نظر میگیره. حالا برای اینکه چنین مشکلی پیش نیاد، میتونیم با آوردن یه \ دیگه پشت اون \ تکی ها، کاراکتر مورد نظر رو Escape کنیم:
TCHAR szPath[MAX_PATH] = _T("c:\\folder1\\file2.txt");
حالا اگر محتوای szPath رو نگاه کنید، کد 0x5C یا همون 92 دسیمال رو میبینید که معادل \ هستش. در واقع چون نمیتونستیم تو کد اول به Compiler بفهمونیم که منظورمون از \ واقعا \ هستش، و نه \f، یه \ دیگه پشت \ تکی ها آوردیم.
برای آشنایی بیشتر با بقیه Character Constant ها، به این آدرس رجوع کنید (http://msdn.microsoft.com/en-us/library/6aw8xdf2%28v=VS.100%29.aspx).
نتیجه: مسیر شما با همون یک \ تعیین میشه، اما برای اینکه Compiler بفهمه که ما منظورمون از \ واقعا \ هستش، اون کاراکتر رو Escape می کنیم.
موفق باشید.
پاورقی: علامت @ تو زبان C# معنا پیدا میکنه، در زبان C/C++ فقط می تونیم از \ برای Escape کردن کاراکتر ها استفاده کنیم. (اگرچه همینکارو در C# هم میتونید انجام بدید که دیگه در اونصورت نیازی به استفاده از @ نیست).
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.