如何在 c++ 和 c# 之间传递包含空字符的字符串

How to pass string between c++ and c# with null characters inside?

本文关键字:包含空 字符 字符串 之间 c++      更新时间:2023-10-16

例如,C++我有一些字符串 string str = "abc";

我需要将此字符串传递给 C#而不会在"\0"之后丢失数据,并且从 c# 传递给 C++ 也不会丢失数据。

你可以帮我吗?

好的,我找到了问题的答案。也许,这不是很好的解决方案,但它解决了我的问题。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;
    }