如何用不同的文本替换文本文件上的某一行



我是C++和CLI/C++的新手,遇到了一个问题。我想用我选择的不同文本替换文本文件中的行。例如,我有一个有12行的文本文件,我想用文本"第6行编辑"替换第6行,即"第6行将"。现在,我一天前才开始学习处理文本文件,我已经学会了如何插入行,所以我现在所有的代码都是这样的:

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++中的代码示例。

您似乎混淆了静态和非静态方法:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    System::String^ txtfile = L"C:\Users\acer\Desktop\aaa.txt";
    array<System::String^>^ lineArray = System::IO::File::ReadAllLines(txtfile);
    System::Collections::Generic::List<System::String^>^ lineList;
    lineList = gcnew System::Collections::Generic::List<System::String^>(lineArray);
    lineList->RemoveAt(6);
    System::IO::File::WriteAllLines(txtfile, fileList->ToArray());
 }

最新更新