C++ 从文件(C+;+;)反转输入

C++ 从文件(C+;+;)反转输入,c++,list,C++,List,我正在创建一个非常基本的程序,它从一个文本文件中读入一个数字列表,以相反的顺序打印,然后声明该顺序是否与原始顺序相同(如调色板) 到目前为止,我的程序能够以相反的顺序打印,但我不确定如何检测它是否与原始文件相同。任何帮助都将不胜感激:) 编辑:对不起,我得走了。这是我到目前为止所拥有的。让它反转,只需要检查回文。我将仔细阅读回复 #include <iostream> #include <fstream> using namespace std; int main()

我正在创建一个非常基本的程序,它从一个文本文件中读入一个数字列表,以相反的顺序打印,然后声明该顺序是否与原始顺序相同(如调色板)

到目前为止,我的程序能够以相反的顺序打印,但我不确定如何检测它是否与原始文件相同。任何帮助都将不胜感激:)

编辑:对不起,我得走了。这是我到目前为止所拥有的。让它反转,只需要检查回文。我将仔细阅读回复

#include <iostream>
#include <fstream>
using namespace std;


int main()
{
const int ARRYLENGTH=20;

int contnums[ARRYLENGTH];
int contents;


ifstream myFile("problem3.txt");
if(! myFile )
{
cout << "File cannot be found";
exit(EXIT_FAILURE);
}

while(!myFile.eof())
{
myFile>>contents;
    for(int i=0;i<ARRYLENGTH;i++)
    {
    myFile >> contnums[i];
    }
}
cout<<contents<<" ";

for (int i = 1; i < ARRYLENGTH; i++)
{
bool same = false;
for (int j = 0; j < i && (same == false); j++){
if (contnums[i] == contnums[j]) 
same = true;
}
if (!same) {

cout<< contnums[i] << " ";
}
}

cout << "\n";

system("pause");
myFile.close();
}
#包括
#包括
使用名称空间std;
int main()
{
常数int ARRYLENGTH=20;
int contnums[ARRYLENGTH];
int内容;
ifstream myFile(“problem3.txt”);
如果(!myFile)
{
内容;
对于(int i=0;i>contnums[i];
}
}

cout尝试从头到尾迭代,并将值与迭代器的值从头到尾进行比较。

尝试从头到尾迭代,并将值与迭代器的值从头到尾进行比较。

如果您知道有多少项,可以通过以下方法简单地完成:

for(int i = 0; i < count/2; ++i) { //count/2 becouse you only have to check half
   if(array[i] != array[count-i-1]) { /*not palindrome */ }
}
//palindrome
for(int i=0;i

最简单的方法,但我更喜欢comment one中的@Dave,因为它很好地使用了STL和迭代器。(只要您正在使用STL容器)。

如果您知道您有多少项,可以通过以下方法简单完成:

for(int i = 0; i < count/2; ++i) { //count/2 becouse you only have to check half
   if(array[i] != array[count-i-1]) { /*not palindrome */ }
}
//palindrome
for(int i=0;i

最简单的方法,但我更喜欢comment one中的@Dave,因为它很好地使用了STL和迭代器。(只要您在使用STL容器)。

我只是想知道比较两个列表在std库中是否有效。它有效:-)

而file2.txt包含

1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1 

我只是想知道在std库中比较两个列表是否有效。有效:——)

而file2.txt包含

1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1 


展示你目前所拥有的,以及你现在所处的位置,我会把它放在这里,谢谢:)展示你目前所拥有的,以及你现在所处的位置,我会把它放在这里,谢谢:)确切地说,rbegin是终点,不是吗。
bool-palindrome=std::equal(s.begin(),s.begin()+s.size()/2,s.rbegin())
@jussi,如果我错了,请原谅我,但我相信rbegin/rend的某些功能在end/begin不起作用的情况下也会起作用,特别是支持
操作符+++
,但不支持
操作符--
@jussi我将其与普通数组[0,1,2,3]进行比较。begin()指向0,end()指向3后,rbegin()指向3,rend()指向0前。所以begin()/rbegin()和end()/rend()是交换的,一对一。确切地说,rbegin就是终点,不是吗。
bool-palindrome=std::equal(s.begin(),s.begin()+s.size()/2,s.rbegin())
@jussi,如果我错了,请原谅,但我相信rbegin/rend的一些东西在end/begin不起作用的地方会起作用,特别是在支持
操作符+
,,但不是
运算符--
@jussi将其与普通数组[0,1,2,3]进行比较。begin()指向0,end()指向3后,rbegin()指向3,rend()指向0前。因此,begin()/rbegin()和end()/rend()被交换,一个为+1,但不需要两个列表。会很好用的。另外:std::vector几乎总是比std::list快。我将继续使用@Kay,通过迭代器对构造函数读取文件。它比那个圈短得多,也安全得多。@Kay谢谢!我不知道STD::(等于或忘记)去年我用Qt++1使用C++,但是你不需要两个列表。会很好用的。另外:std::vector几乎总是比std::list快。我将继续使用@Kay,通过迭代器对构造函数读取文件。它比那个圈短得多,也安全得多。@Kay谢谢!我不知道STD::(等于或忘记它)去年我用QT使用C++。