文字列
ディレクトリ区切り子として'\'を使ってパスを書くとき、
"\\"と書いて面倒って思ったことはないでしょうか?
C#は@を文字列の前に書くと'\'をエスケープとして解釈しない文字列になります。
残念ながらC++/CLIにはありません。
@を付けた逐語的リテラル文字列は"\t"を"\t"のまま扱います。
"\t"はタブとして、"\\"は'\'として解釈されます。
"\\"と書いて面倒って思ったことはないでしょうか?
C#は@を文字列の前に書くと'\'をエスケープとして解釈しない文字列になります。
残念ながらC++/CLIにはありません。
[C#]
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("c:\tmp");
Console.WriteLine(@"c:\tmp");
string path = Path.Combine(@"c:\", "tmp");
path = Path.Combine(path, "dir");
Console.WriteLine(path);
}
}
[出力]
c: mp
c:\tmp
c:\tmp\dir
@を付けない標準リテラル文字列は"\t"をタブと解釈します。@を付けた逐語的リテラル文字列は"\t"を"\t"のまま扱います。
[C++/CLI]
using namespace System;
using namespace System::IO;
int main()
{
Console::WriteLine("c:\tmp");
Console::WriteLine("c:\\tmp");
String^ path = Path::Combine("c:\\", "tmp");
path = Path::Combine(path, "dir");
Console::WriteLine(path);
return 0;
}
[出力]
c: mp
c:\tmp
c:\tmp\dir
C++には逐語的リテラル文字列がないので、"\t"はタブとして、"\\"は'\'として解釈されます。