我是 C++ 和 CLI/C++ 的新手,我遇到了问题。我想用我选择的不同文本替换文本文件中的行。例如,我有一个 12 行的文本文件,我想用文本“第 6 行已编辑”替换第 6 行,即“第 6 行”。现在,我 1 天前才开始学习处理文本文件,并且我已经弄清楚如何插入行,所以我目前拥有的所有代码都是这样的:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
char txtfile[]="C:\\Users\\acer\\Desktop\\aaa.txt";
StreamWriter ^writer = gcnew StreamWriter(gcnew String(txtfile),true);
writer->WriteLine("Line 1");
writer->WriteLine("Line 2");
writer->Close();
delete writer;
}
根据我的研究,我发现我有两种方法可以做到这一点。我可以使用一个临时文件,或者如果文件不是太大,我可以将所有行加载到一个数组中并将其存储在内存中。文件是 1KByte,所以我想用第二种方法将它存储在内存中。现在,我的问题是,由于我是这种语言的新手,我不知道如何实际做到这一点。而且我一直在寻找是否可以找到有关如何在 CLI C++ 中执行此操作的说明,但我找不到任何东西。我一直在这里查看这个主题-->从文本文件中删除特定行? 但它在 C# 中,我不知道如何将代码转换为 CLI C++。
编辑:我从其他主题中看到了这段 C# 代码,它显示了如何删除一行,我想试试
var file = new List<string>(System.IO.File.ReadAllLines("C:\\path"));
file.RemoveAt(12);
File.WriteAllLines("C:\\path", file.ToArray());
我试图在 CLI/C++ 中转换成这样的东西:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
char txtfile[]="C:\\Users\\acer\\Desktop\\aaa.txt";
array<String^>^ fileArray = System::IO::File->ReadAllLines(txtfile);
fileArray->Remove(6);
File->WriteAllLines(txtfile, fileArray->ToArray());
}
但是我没有成功,因为我是新手,所以我不知道 CLI/C++ 的正确语法。如何在 CLI C++ 中使用该 C# 代码?我非常感谢这些说明,但我需要 CLI/C++ 中的代码示例。