我有一份來自大學的作業,其中有一個具有多個值的文本文件。 他們在不同的線路上,我必須把它們存儲在一個矢量。 我們還必須使用一個具有ifstream,ofstream和int Vector的Class,但它們都在Class的私有部分,我似乎無法使用它們(不允許更改該類!)。 我們通過getline獲取了值,但現在需要將它們從字符串轉換爲int,但問題是我們不允許添加更多的庫。 我們被允許使用的庫是:C++將文本文件中的數據轉換爲int向量
iostream
string
fstream
vector
在將這些任何幫助,將不勝感激!
下面是簡介:
計劃1
編寫包含符合以下 聲明一個類的節目(即本聲明應該在你的 CPP文件的頂部放) :
您的程序應從名爲'sales.txt' 的文件讀取銷售值,並將代表這些值的條形圖輸出到名爲 'graph.txt'的文件中。通過顯示一行 星號在條形圖中創建每個條形圖。每個星號代表100英鎊的銷售額。
例如, 'sales.txt' 文件包含以下值:
1000 500 1200 600 200
這裏是 'graph.txt' 文件中的程序後,應該包含爲 執行什麼:
SALES BAR CHART (each * equals £100) Store 1: ********** Store 2: ***** Store 3: ************ Store 4: ****** Store 5: **
這裏是我們不允許改變的類:
#pragma once
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
using namespace std;
class SalesData
{
private:
ifstream inputfile;
ofstream outputfile;
vector<int> salesrecords;
public:
void loadDataFromFile(string filename);
void saveBarChartToFile(string filename);
};
我已經完全跳過了這個類,並創建了新的ifstream/ofstream和向量。 輸出我工作得很好,我正在努力的輸入!
void loadDataFromFile()
{
ifstream inputfile;
vector<int> salenumbers;
int holder;
inputfile.open("sales.txt");
if (!inputfile.is_open())
{
cout << "Text Not Open Error!";
}
else
{
string line;
vector<string> text;
int i = 0;
while (inputfile.good())
{
getline(inputfile, line);
text[i] = line;
i++;
}
for (int z = 0; z <= 5; z++)
{
int num = atoi(text.at(z).c_str());
salenumbers.push_back(num);
}
}
inputfile.close();
saveBarChartToFile(salenumbers);
}
我已經嘗試了多種方法,像直到eof,只是把它直接進入一個int向量,他們沒有工作。我發現很多方法將字符串更改爲int,但它需要更多的庫。
另外,如果我可以利用這個類,它會使它更容易。
我要提出一個新的問題,但它不會讓我,所以將它添加到這一個:
我有一個功能,以輸出到我與COUT測試文件,它工作正常打印到屏幕上。現在我已經改變它輸出到一個文件,但沒有任何東西出現在文件中。
想知道如果任何人都可以看到的錯誤:
void saveBarChartToFile(vector<int>numbers)
{
ofstream outputfile;
outputfile.open("graph.txt", std::ios_base::app);
if (!outputfile.is_open())
{
cout << "FILE NOT OPEN ERROR!";
}
else
{
for (int i = 0; i < numbers.size(); i++)
{
int stars = 0;
int starAmount = numbers[i]/100;
outputfile << "Shop" << (i + 1) << ":";
for (int j = 0; j < starAmount; j++)
{
outputfile << "*";
}
outputfile << "/n";
}
outputfile.close();
}
}
你能比「我似乎無法使用它們」更具體嗎?從這裏很難看出你的代碼是什麼樣的。 – molbdnilo
您能告訴我們提供給您的課程 – baliman
您可以使用 將字符串轉換爲int string str =「123」; int numb; istringstream(str)>> numb; – baliman