فکر می کردم قبلا این موضوع را برای شما توضیح داده بودم، که بررسی کردم و دیدم برای فرد دیگری بود. پس این لینک را مطالعه کنید
مجددا توضیح مختصری:
در ++C برای اینکه کارکتر \ را در رشته یا یک متغیر کارکتر ذخیره کنید، باید دو مرتبه بنویسید تاکامپایلر بفهمد و یک \ را ذخیره کنید. همان طوری که در لینک فوق هم گفتم شما اگر بنویسید \\\\ یعنی 2 تا \ را دخیره کن و به همین شکل.
کلا اگر یک مرتبه بنویسید کامپایلر اشتباها کارکتر بعدی را هم در نظر می گیرد و برنامه شما خطا می دهد یا اشتباها کارکتر دیگری را دخیره می کند.
دقت کنید که این فقط برای مواقعی هست که شما مستقیم رشته را در کدنویسی می نویسید و می خواهید در رشته یا کارکتری ذخیره کنید، مثل مورد زیر:
char mychar = '\\' ; // store only one \
char mystr[20] = _T("c:\\folder" ); // store --> c:\folder
به این گونه کارکتر ها Escape Sequences می گویند (مانند n\ و ?\ و ...) که سایر آن را می توانید
از این لینک مشاهده کنید.
چیزی که ذخیره می شود همان یک مرتبه \ هست.
تذکر: اگر شما از ورودی مثلا یک EditBox یک مسیر با یک \ دریافت کنید برنامه شما درست جواب می دهد، چون شما فقط عمل کپی محتویات را انجام داده اید، و در کدنویسی داخل برنامه \ ننوشته اید که قرار باشد \\ را بنویسید، هدف نهایی همان ذخیره یک \ در رشته مسیر هست که عمل کپی انجام می دهد.
در برنامه شما همان کد دکمه دومی درست هست. چون خودتان به شکل کدنویسی دارید \ را ذخیره می کنید پس \\ باید قرار گیرد و اصلا نیاز به تبدیل نیست.