2015-01-30 8 views
3

는 ++ 나는 예를 string str = "a\0b\0c";C++과 C# 사이에 null 문자가 포함 된 문자열을 전달하는 방법은 무엇입니까? C에서

를 들어, 일부 문자열을하고 난 "\ 0"후 데이터의 손실없이 C#을이 문자열을 전달해야하고, 데이터를 잃지 않고 또한 C++에 C#을 통과에서.

도와 주시겠습니까?

+1

이 C++/CLI하거나 C++인가? –

+0

잘 모르겠지만 아마 C++/CLI –

+0

음 .. 이건'std :: string' 또는'System.String ^'입니까, 아니면 다른 것입니까? 어쨌든 C++/CLI 인 경우 [this] (https://msdn.microsoft.com/en-us/library/bb384865.aspx)를 참조하십시오. –

답변

0

좋아, 내 질문에 대한 답변을 찾았습니다. 아마, 좋은 해결책은 아니지만 내 문제를 해결합니다. C++ :

string EncodeConfigString(string OptionsString) 
{ 
string tempOptions = " "; 
if (OptionsString.size() != 0) 
{ 
    vector<int> arrayOfIntCodes; 

    for (int i = 0; i < OptionsString.size(); i++) 
    { 
     int codeOfChar = OptionsString[i]; 
     tempOptions += std::to_string(codeOfChar) + "&"; 
    } 
} 

return tempOptions; 
} 

C 번호 :

private string DecodeConfig(StringBuilder OptionsBuilder) 
    { 
     string result = String.Empty; 
     string Options = OptionsBuilder.ToString(); 

     if (!string.IsNullOrEmpty(Options) && Options.Contains(Consts.AMPERSAND)) 
     { 
      string[] entries = Options.Split(Consts.AMPERSAND); 

      StringBuilder chars = new StringBuilder(Consts.OUTPUT_MAX_SIZE); 

      for (int i = 0; i < entries.Length; i++) 
      { 
       int resultParse; 

       if (int.TryParse(entries[i], out resultParse)) 
       { 
        chars.Append((char)resultParse); 
       } 
      } 

      result = chars.ToString(); 
     } 

     return result; 

    }