在 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 上有一个构造函数可以进行转换,但最好只在托管区域中进行工作。
我正在尝试编写一个程序,我可以在其中查找和替换用旧正字法书写的单词。
例如,我有文本“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 上有一个构造函数可以进行转换,但最好只在托管区域中进行工作。