在 Visual Studio Express 2013 中查找并替换文本框中的特定单词

Find and replace particular words from a Textbox in Visual Studio Express 2013

我正在尝试编写一个程序,我可以在其中查找和替换用旧正字法书写的单词。
例如,我有文本“ads eajifajefaeof daß”,并希望将其更改为“ads eajifajefaeof dass”。
所以我有 2 个文本框和 1 个按钮以及此代码:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    String^ content = textBox1->Text;
    IntPtr ptrToNativeString = Marshal::StringToHGlobalAnsi(content);
    char* c1 = static_cast<char*>(ptrToNativeString.ToPointer());
    char* pch;
    pch = strstr(c1, "daß");
    strncpy(pch, "dass", 4);
    puts(c1);
    String^ contentnew;
    contentnew = System::Convert::ToString(c1);
    textBox2->Text = contentnew;
}

但是如果我在 textBox1 中输入一些带有单词“daß”的文本并单击按钮 textBox2 只显示单词“true".
我必须更改我的代码才能正常工作吗?

无需为此使用非托管设施:让 .Net 库为您完成。

private: void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
    String^ content = textBox1->Text;
    String^ contentnew = content->Replace("daß", "dass");
    textBox2->Text = contentnew;
}

你得到 "true" 的原因是因为 Convert::ToString 不知道非托管 char* 字符串。重载解析选择 ToString(bool) 作为最佳匹配,因为在 C++ 中,所有指针都可以转换为 bool 作为 null 测试。 String class 上有一个构造函数可以进行转换,但最好只在托管区域中进行工作。