[英]How would I print numbers from a vector onto a file?
//到目前為止,這是我的代碼
//在這里,我僅輸入一個包含全數字的文件,其中包括十進制數字
ifstream infile;
infile.open("Numbers.txt");
if (!infile) {
cout << "Unable to open the file" << endl;
return;
}
//創建向量以在其中存儲這些數字
vector<int> iNumbers;
vector<double> dNumbers;
if (infile) {
int i;
double d;
while (infile >> i && infile >> d) {
iNumbers.push_back(i);
dNumbers.push_back(d);
}
infile.close();
}
/ *現在嘗試將這些數字打印或放置到兩個不同的文件中,將整數放入integer.txt中,將雙倍放入doubles.txt中* /
ofstream integerOut("integer.txt");
vector<int>::iterator ii;
for (ii = iNumbers.begin(); ii != iNumbers.end(); ++ii)
{
if (ii = int {
}
integerOut << *ii << endl;
cout << *ii << endl;
}
integerOut.close();
ofstream doubleOut("double.txt");
vector<double>::iterator dd;
for (dd = dNumbers.begin(); dd != dNumbers.end(); ++dd)
{
doubleOut << *dd << endl;
cout << *dd << endl;
}
doubleOut.close();
}
//我的代碼僅給我我的integer.txt文件的前兩個數字和我的double.txt文件的最后一個小數。 我究竟做錯了什么?
進一步說明:我有一個名為Numbers.txt的文件,其中包含
1
五
9.4
3
4
6.3
五
2.2
我正在獲取整數,並嘗試將它們放入interger.txt文件,而我正在獲取雙精度數,並將其放入double.txt文件。 但是在我的代碼中我收到整數
1
2
9
3
4
6
五
2
當我想收到
1
五
3
4
五
只要
您可以使用標准算法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;
}
至於輸入,據我所知,文件中兩個整數后跟一個雙精度數。 因此,您需要相應地閱讀數字。
int i1, i2;
double d;
bool valid = true;
while ( valid )
{
if ( valid = infile >> i1 ) iNumbers.push_back( i1 );
if ( valid && ( valid = infile >> i2 ) ) iNumbers.push_back( i2 );
if ( valid && ( valid = infile >> d ) ) dNumbers.push_back( d );
}
如果您不知道文件中的下一個數字是整數還是雙數,則可以通過數字中的句點來區分它們。 例如
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 );
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.