【问题标题】:In C++/CLI, how to copy a char * to a System::String (not a C++ std::string)?在 C++/CLI 中,如何将 char * 复制到 System::String(不是 C++ std::string)?
【发布时间】:2022-08-12 01:00:59
【问题描述】:

虽然我很了解 C,但在 C++/CLI 中将 char 数组复制到 System::String(不是 C++ std::string)时遇到问题。

我正在(第一次)使用 Visual Studio 及其拖放式表单设计功能来创建 C++ Windows GUI 程序。该程序主要工作,但我无法将 char 数组(使用 sprintf 创建)复制到 System::String(许多 Visual Studio 控件使用的类型)。

我试着写这个函数:

private: System::String^ cts(char *aa) {  // convert char[] to String

    int i;
    String^ s;

    s = \"\";
    for (i = 0; aa[i]; i++)
        s = s + aa[i];
    return s;
}

但是 cts(\"h\") 返回 \"104\" (小写 h 的 ASCII 码),我希望它以字符串格式返回 \"h\"。

帮助将不胜感激。

  • 欢迎来到堆栈溢出。请确保您准确了解您使用的语言以及任何第三方库。 C++ 标准库没有System 命名空间,^ 不是类型语法的一部分。我的猜测是您使用this thing,即不是C++。
  • \"我第一次使用 Visual Studio 及其拖放式表单设计功能来创建 C++ Windows GUI 程序。\" 好的;但这与你问的问题?请阅读How to Ask,并尽量将背景信息集中在为了理解问题需要什么.另外,请确保问一个问题; “我们将不胜感激”does not qualify
  • 谢谢,卡尔。是的,我不知道我在使用 C++/CLI,我没有听说过,并通过观看有关创建 Visual Studio 项目的 YouTube 视频选择了它。但这解释了我不认识的结构,因为我最后一次(只是一次)C++ 工作是多年前,我的主要经验是 C 编程。关于“第一次使用 Visual Studio”,我这样写是为了让读者理解环境和语法对我来说是新的,尽管我可以更简短一些。至于“帮助将不胜感激”,这似乎是一个礼貌的补充,但我会在以后的问题中避免它。
  • 有礼貌很好,但我们喜欢直接,我们喜欢明确的问题.例如“我怎样才能得到 XYZ 结果?”或“为什么我得到的是 ABC 结果而不是预期的 XYZ?”

标签: string char c++-cli


【解决方案1】:

System::String 有一个接受const char* 的构造函数。
因此,您所要做的就是使用gcnew 创建一个新的System::String,并将const char* 作为参数传递(也可以传递char*)。

请看下面的代码:

System::String^ cts(const char *aa)
{
    return gcnew System::String(aa);
}

int main()
{
    System::String ^ system_str = cts("abcd");
    System::Console::WriteLine(system_str);
    return 0;
}

输出:

abcd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多