C++ 无法成功生成文件和控制台的std::set输出
我试图从文件中读取一个整数列表,并将它们存储到C++ 无法成功生成文件和控制台的std::set输出,c++,set,C++,Set,我试图从文件中读取一个整数列表,并将它们存储到std::set容器中,然后将整数输出到控制台,然后生成输出文件。我试过做这件事,但没有成功。如果我在程序中使用.erase(),那么我可以在控制台上看到输出和一个没有文本的空文件。如果我不使用.erase(),那么我有无限循环的运行时错误` #include <iostream> #include <set> #include <fstream> #include <iterator> using n
std::set
容器中,然后将整数输出到控制台,然后生成输出文件。我试过做这件事,但没有成功。如果我在程序中使用.erase()
,那么我可以在控制台上看到输出和一个没有文本的空文件。如果我不使用.erase()
,那么我有无限循环的运行时错误`
#include <iostream>
#include <set>
#include <fstream>
#include <iterator>
using namespace std;
int main()
{
set<int> myset;
fstream textfile;
textfile.open("input.txt"); // opening the file
// reading input from file
while (!textfile.eof())
{
int iTmp = 0;
textfile >> iTmp;
myset.insert(iTmp);
}
// output to the console
set<int>::iterator iter = myset.begin();
while (!myset.empty())
{
cout << *myset.begin() << " ";
myset.erase(myset.begin());
}
// writting output to the file
ofstream out_data("Ahmad.txt");
while (!myset.empty())
{
out_data << *myset.begin() << " ";
}
system("pause");
}`
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
设置myset;
fstream文本文件;
textfile.open(“input.txt”);//打开文件
//从文件读取输入
而(!textfile.eof())
{
int-iTmp=0;
文本文件>>iTmp;
myset.insert(iTmp);
}
//输出到控制台
set::iterator iter=myset.begin();
而(!myset.empty())
{
cout您没有正确使用迭代器
set<int>::iterator iter = myset.begin();
ofstream out_data("Ahmad.txt");
for(; iter != myset.end(); iter++)
{
cout << *iter << " ";
out_data << *iter << " ";
}
set::iterator iter=myset.begin();
流式输出数据(“Ahmad.txt”);
对于(;iter!=myset.end();iter++)
{
cout您正在显示它们的循环中擦除它们
// output to the console
for (auto& x : myset)
cout << x << " ";
// writting output to the file
ofstream out_data("Ahmad.txt");
for (auto& x : myset)
out_data << x << " ";
//输出到控制台
用于(自动&x:myset)
不能包含
#包括
#包括
使用名称空间std;
int main(){
使用数据类型=int;
设置数据集;
//将cin更改为您的ifstream
复制(istream_迭代器(cin),
istream_迭代器(),
插入器(数据集,结束(数据集));
//将cout更改为您的流
复制(开始(数据集)、结束(数据集)、ostream(迭代器)(cout)(“”);
返回0;
}
示例:和您的问题无关,但您可能想阅读。他可能不使用c++11。看到教科书上使用std算法总是很高兴的
#include <iostream>
#include <iterator>
#include <set>
using namespace std;
int main() {
using data_type = int;
set<data_type> data_set;
//change cin to your ifstream
copy(istream_iterator<data_type>(cin),
istream_iterator<data_type>(),
inserter(data_set, end(data_set)));
//change cout to your ofstream
copy(begin(data_set), end(data_set), ostream_iterator<data_type>(cout, " "));
return 0;
}