gpt4 book ai didi

C++从文件中删除重复的数字

转载 作者:行者123 更新时间:2023-11-28 07:39:08 25 4
gpt4 key购买 nike

我正在尝试用 c++ 编写一个可以通过 txt 文件运行的程序,如果此文件中的数字有重复,则不要打印它们,只打印出现一次的数字。

这是我得到的代码。但是发生的事情是它打印出文件,然后再次打印出第二行而不是寻找重复...

谁能告诉我哪里出了问题。 c++ 相当新

// array.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
int array[100]; // creates array to hold numbers
short loop=0; //short for loop for input
string line; //this will contain the data read from the file
ifstream myfile ("problem3.txt"); //opening the file.
if (myfile.is_open()) //if the file is open
{
while (! myfile.eof() ) //while the end of file is NOT reached
{
getline (myfile,line); //get one line from the file
array[loop] = line;
cout << array[loop] << endl; //and output it
loop++;
}

for (int i = 1; i < loop; i++)
{
bool matching = false;
for (int j = 0; (j < i)&& (matching == false); j++)
{
if (array[i] == array[j])
matching = true;
}
if (!matching)
cout<< array[i] << " "
}
myfile.close(); //closing the file
}
else
cout << "Unable to open file"; //if the file is not open output
system("PAUSE");
return 0;
}

最佳答案

至少一个错误:array 声明为整数数组,您正在读取字符串 line 并将 string 分配给 int 直接在下面:

 getline (myfile,line); //^^line is string, array[i] is int
array[loop] = line;

您可以尝试读取 vector 中的这些行,然后调用 std::unique 使 vector 唯一并将它们打印出来。您的文件行不一定是整数行,因此将它们存储在整数数组中可能行不通。

你可以试试:

#include <vector>
#include <string>
#include <algorithm>
#include <iterator>

int main()
{
std::vector<std::string> data;
ifstream myfile ("problem3.txt");
string line;
//if not required to use array
while (getline(myfile, line))
{
data.push_back(line);
}

std::vector<std::string> data(dataArray, dataArray + 100);

myfile.close();
std::sort( data.begin(), data.end() );
data.erase( std::unique( data.begin(), data.end()), data.end() );
//now print vector out:
std::copy(data.begin(), data.end(), ostream_iterator<string>(cout, " \n"));
return 0;
}

关于C++从文件中删除重复的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com