我有一份来自大学的作业,其中有一个具有多个值的文本文件。 他们在不同的线路上,我必须把它们存储在一个矢量。 我们还必须使用一个具有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