Sorting c++/cli中的Sort.txt
我将几行字符串以不特定的顺序保存到文本文件中,我为其制作这个小软件的人要求我在加载保存的数据时对每个项目的ID进行排序。问题是我完全不知道从哪里开始或者怎么做。我到处找了,但找不到任何东西来解决我的问题 首先,我对保存文件很陌生,所以保存的数据很笨重。它是一行一行地写的,并被空格分割,例如: 1020联想笔记本电脑名LastName XXXXXXXXX姓氏姓氏 它需要按ID逐行排序。它已经加载在一个列表框中,我想我有加载部分工作完美,只需要它被整理出来 这是我的加载函数:Sorting c++/cli中的Sort.txt,sorting,c++-cli,Sorting,C++ Cli,我将几行字符串以不特定的顺序保存到文本文件中,我为其制作这个小软件的人要求我在加载保存的数据时对每个项目的ID进行排序。问题是我完全不知道从哪里开始或者怎么做。我到处找了,但找不到任何东西来解决我的问题 首先,我对保存文件很陌生,所以保存的数据很笨重。它是一行一行地写的,并被空格分割,例如: 1020联想笔记本电脑名LastName XXXXXXXXX姓氏姓氏 它需要按ID逐行排序。它已经加载在一个列表框中,我想我有加载部分工作完美,只需要它被整理出来 这是我的加载函数: private: Sy
private: System::Void btn_load_Click(System::Object^ sender, System::EventArgs^ e) {
lst_relier->Items->Clear();
String^ fileName = "save.txt";
try
{
StreamReader^ read = File::OpenText(fileName);
String^ str;
int count = 0;
while ((str = read->ReadLine()) != nullptr)
{
count++;
Console::WriteLine("line {0}: {1}", count, str);
// MessageBox::Show(str);
lst_relier->Items->Add(str);
}
}
catch (Exception^ e)
{
if (dynamic_cast<FileNotFoundException^>(e))
Console::WriteLine("Fichier introuvable", fileName);
else
Console::WriteLine("Erreur de chargement", fileName);
}
}
这个软件没什么大不了的,我是一家公司的实习生,我正在为我在公司的朋友们制作这个软件。它不需要是一流的表现,但它需要正常工作
任何帮助都将不胜感激,谢谢 创建域模型类:
public ref class Item
{
private:
static int Sort(Item^ item1, Item^ item2)
{
return item1->Id.CompareTo(item2->Id);
}
public:
property int Id;
property String^ Title;
property String^ FirstName;
property String^ LastName;
static Comparison<Item^>^ comparison = gcnew Comparison<Item^>(&Sort);
};
从文件读取、分析和填充集合:
StreamReader^ read = File::OpenText(L"save.txt");
String^ str;
while ((str = read->ReadLine()) != nullptr)
{
array<String^>^ splitted = str->Split();
Item^ item = gcnew Item();
item->Id = int::Parse(splitted[0]);
item->Title = splitted[1];
item->FirstName = splitted[2];
item->LastName = splitted[3];
items->Add(item);
}
read->Close();
dataGridView1->DataSource = items;
调用排序方法并重新绑定。谢谢您的帮助。我已经找到了一种在回复之前进行排序的方法,如果您选择了它,那么我就不知道了,我也开始在datagridview中列出它,它确实好看得多。你使用它的方式与我不同,这将非常有帮助。非常感谢。
StreamReader^ read = File::OpenText(L"save.txt");
String^ str;
while ((str = read->ReadLine()) != nullptr)
{
array<String^>^ splitted = str->Split();
Item^ item = gcnew Item();
item->Id = int::Parse(splitted[0]);
item->Title = splitted[1];
item->FirstName = splitted[2];
item->LastName = splitted[3];
items->Add(item);
}
read->Close();
dataGridView1->DataSource = items;
items->Sort(Item::comparison);
dataGridView1->DataSource = nullptr;
dataGridView1->DataSource = items;