C++ 如何将矢量中的数字打印到文件中?
//这是到目前为止我的代码 //在这里,我只是简单地接受一个充满数字的文件,包括十进制数字C++ 如何将矢量中的数字打印到文件中?,c++,file-io,C++,File Io,//这是到目前为止我的代码 //在这里,我只是简单地接受一个充满数字的文件,包括十进制数字 ifstream infile; infile.open("Numbers.txt"); if (!infile) { cout << "Unable to open the file" << endl; return; } ifstream-infle; infle.open(“Numbers.txt”); 如果(!infle){ cout i&&infle>>
ifstream infile;
infile.open("Numbers.txt");
if (!infile) {
cout << "Unable to open the file" << endl;
return;
}
ifstream-infle;
infle.open(“Numbers.txt”);
如果(!infle){
cout i&&infle>>d){
数。推回(i);
d数字。推回(d);
}
infle.close();
}
/*
现在正在尝试打印或将这些数字放入两个不同的文件中,将整数放入integer.txt,将double放入DOUBLES.txt
*/
流整数输出的(“integer.txt”);
向量:迭代器ii;
对于(ii=iNumbers.begin();ii!=iNumbers.end();++ii)
{
如果(ii=int{
}
integerOut您可以使用标准算法std::copy
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
//...
std::ofstream integerOut( "integer.txt" );
if ( integerOut )
{
std::copy( iNumbers.begin(), iNumbers.end(),
std::ostream_iterator<int>( integerOut, " " ) );
}
std::ofstream doubleOut( "double.txt" );
if ( doubleOut )
{
std::copy( dNumbers.begin(), dNumbers.end(),
std::ostream_iterator<double>( doubleOut, " " ) );
}
#include <iostream>
#include <fstream>
//...
std::ofstream integerOut( "integer.txt" );
for ( int x : iNumbers )
{
if ( !( integerOut << x << ' ' ) ) break;
}
std::ofstream doubleOut( "double.txt" );
for ( double x : dNumbers )
{
if ( !( doubleOut << x << ' ' ) ) break;
}
std::string value;
while ( infile >> value )
{
if ( value.find( '.' ) != std::string::npos )
{
double d = std::stod( value );
dNumbers.push_back( d );
}
else
{
int i = std::stoi( value );
iNumbers.push_back( i );
}
}
如果您不知道文件中的下一个数字是整数还是双精度,可以通过数字中是否存在句点来区分它们
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
//...
std::ofstream integerOut( "integer.txt" );
if ( integerOut )
{
std::copy( iNumbers.begin(), iNumbers.end(),
std::ostream_iterator<int>( integerOut, " " ) );
}
std::ofstream doubleOut( "double.txt" );
if ( doubleOut )
{
std::copy( dNumbers.begin(), dNumbers.end(),
std::ostream_iterator<double>( doubleOut, " " ) );
}
#include <iostream>
#include <fstream>
//...
std::ofstream integerOut( "integer.txt" );
for ( int x : iNumbers )
{
if ( !( integerOut << x << ' ' ) ) break;
}
std::ofstream doubleOut( "double.txt" );
for ( double x : dNumbers )
{
if ( !( doubleOut << x << ' ' ) ) break;
}
std::string value;
while ( infile >> value )
{
if ( value.find( '.' ) != std::string::npos )
{
double d = std::stod( value );
dNumbers.push_back( d );
}
else
{
int i = std::stoi( value );
iNumbers.push_back( i );
}
}
问题是…?@herohuyongtao我的代码只给了我integer.txt文件的前两个数字和double.txt文件的最后一个小数。我试图找出我做错了什么,所以我可以简单地将整数打印到integer vector,然后输出到integer.txt,并对double执行同样的操作。进一步解释:我有一个名为Numbers.txt的文件,其中的数字包含1 5 9.4 3 4 6.3 5 2.2我正在获取整数并尝试将它们放入integer.txt文件,我正在获取double并将它们放入double.txt文件。但是在我的代码中,当我想要接收1 5时,我接收整数1 2 9 3 4 6 5 23 4 5 onlyLets只是说Numbers.txt文件中的整数和double是随机的,没有任何类型的模式,我怎么才能只将整数放入一个向量,只将double放入一个单独的向量,然后将integers向量中的整数打印到integers.txt文件中,对double也一样?@anonymous我已经更新了我的帖子。你在这个问题上帮了我很多,我想知道你是否也能帮我解决这个问题:@anonymous你的问题被搁置。我无法回答。