读取 C++ 中的 txt 数据,展开为行或列并排序

Read txt data in C++, expand into a row or column and sort

本文关键字:排序 中的 C++ txt 数据 读取      更新时间:2023-10-16

我是C++的新手,需要用C++写一段代码,读取txt数据,扩展到一个维度(一行或一列(并按降序排序。最后,我想指定一个百分比范围来取平均值。我在网上找到了一些代码片段,并像这样调试了它,但在排序阶段我无法得到我想要的结果,所有数据都会变成 -858993460。希望有人能帮助我。 txtfile

#include "stdafx.h"
#include <vector>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<fstream>
#include<typeinfo>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i = 0, j = 0, k = 0;
int t = 0, f = 0;
int data[20];
ifstream infile;
infile.open("C:\UsersnDesktop1111.txt");
for ( i = 0; i < 5; i++)
{
for ( j = 0; j < 4; j++)
{
infile >> data[k++];
}
}   
for (i = 0; i < 5; i++)
{
for (j = 0; j < 4; j++)
{
if (data[i] > data[j]) //Sort from big to small
{
//Exchange the values of both
t = data[i];
data[i] = data[j];
data[j] = t;
}
}
}
for (int f = 0; f < 20; f++)
{
cout << data[f];
cout << 'n';
}
system("PAUSE");
}

结果

你需要转义你的

\

如果您更改您的

infile.open("C:\UsersnDesktop1111.txt");

infile.open("C:\Users\n\Desktop\1111.txt");它应该正常工作。

编辑:我刚刚复制了您的文件,我可以阅读您的所有输入。我认为您的文件的打开过程仍然存在问题。

另一个问题:您将 20 个值读入数组。因此,您不需要 2 个嵌套的 for 循环。一个计数到 20 的循环足以完成该任务。这是排序算法不起作用的主要原因。

一些奇怪的代码,但您的主要错误是没有检查文件打开是否成功。您获得的垃圾值强烈表明文件打开失败。

文件可能由于多种原因而无法打开(包括 cKai 上面提到的文件(。将以下内容添加到代码中以检查文件是否已打开。

ifstream infile;
infile.open("C:\Users\n\Desktop\1111.txt");
if (!infile.is_open())
{
cerr << "file open failed, quittingn";
system("PAUSE");
return 1;
}

编辑

好的,所以上面没有证明任何事情,现在也许试试这个。改变

infile >> data[k++];

对此

if (!(infile >> data[k++]))
{
cerr << "read failed, quittingn";
system("PAUSE");
return 1;
}

并查看是否会产生任何错误消息。