【发布时间】:2022-01-09 10:09:14
【问题描述】:
我正在尝试创建一个函数并将其链接到头文件并将该函数调用到我的 main.cpp。 这是我将在 main.cpp 文件中调用的一个函数的代码。 我正在尝试创建一个排序函数来确定文件中的整数是否按顺序排序。
我将从中读取的文件既可以排序也可以不排序,并为用户输出结果,具体取决于文件的结果。 希望我解释清楚! :S
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include "SortingFunc1.h"
int file_sort_checker() {
int nums;
std::string in_file_name;
std::ifstream resultat;
resultat.open("A");
resultat >> nums;
while (resultat.eof()) {
bool resultat = std::is_sorted(in_file_name.begin(), in_file_name.end());
if (resultat)
std::cout << "Filen är sorterad!" << nums << std::endl;
else {
std::cout << "Filen är inte sorterad!" << nums << std::endl;
}
resultat >> nums;
}
resultat.close();
}
【问题讨论】:
-
您要重构代码的哪一部分?为什么要重构?
-
此代码检查
in_file_name中的字符是否已排序。可悲的是in_file_name是一个空字符串,它与文件内容无关。你应该阅读Why is iostream::eof inside a loop condition (i.e.while (!stream.eof())) considered wrong?。 -
你可以做的是:
std::string message; if (resultat) message = "Filen är sorterad!"; else message = "Filen är inte sorterad!"; std::cout << message << nums << std::endl; -
您需要决定是否要将所有数据读入容器中,例如
std::vector,然后确定该数据是否已排序,或者您是否希望通过记住读取的最后一项并将其与当前项进行比较,以查看这两项是否已排序,然后重复该过程直到到达文件末尾或读取的值小于前一项。 -
您的函数正在检查 filename 是否已排序,而不是文件。如果你想使用
std::is_sorted,你需要一个ifstream迭代器。
标签: c++ visual-c++