【发布时间】:2014-09-21 14:49:19
【问题描述】:
我遇到的问题是我正在从文件中读取数据,然后将它们写入文件,但是第一个元素被删除了。我会给你一个例子。对不起语言,但是它不应该因为理解发生了什么而打断,这段代码有点简单。
所以数据文件。从此:
4 12
Domas P 2 balta Z 0 balta R 0 balta B 0 balta V 0 balta K 0 balta P 2 juoda Z 0 juoda R 0 juoda B 0 juoda V 0 juoda K 0 juoda
Lukas P 4 balta Z 0 balta R 0 balta B 0 balta V 0 balta K 0 balta P 4 juoda Z 0 juoda R 0 juoda B 0 juoda V 0 juoda K 0 juoda
Tomas P 6 balta Z 0 balta R 0 balta B 0 balta V 0 balta K 0 balta P 6 juoda Z 0 juoda R 0 juoda B 0 juoda V 0 juoda K 0 juoda
Tadas P 8 balta Z 0 balta R 0 balta B 0 balta V 0 balta K 0 balta P 8 juoda Z 0 juoda R 0 juoda B 0 juoda V 0 juoda K 0 juoda
我得到了这个:
P 2 balta Z 0 balta R 0 balta B 0 balta V 0 balta K 0 balta P 2 juoda P 4 balta Z 0 balta R 0 balta B 0 balta V 0 balta
Lukas P 4 balta Z 0 balta R 0 balta B 0 balta V 0 balta K 0 balta P 4 juoda P 6 balta Z 0 balta R 0 balta B 0 balta V 0 balta
Tomas P 6 balta Z 0 balta R 0 balta B 0 balta V 0 balta K 0 balta P 6 juoda P 8 balta Z 0 balta R 0 balta B 0 balta V 0 balta
Tadas P 8 balta Z 0 balta R 0 balta B 0 balta V 0 balta K 0 balta P 8 juoda Z 0 juoda R 0 juoda B 0 juoda V 0 juoda K 0 juoda
第一个元素“Domas”被删掉了。如果它是一个 int 类型变量,它将显示 -884646546 或类似的东西。正如我已经知道的那样,这意味着程序找不到任何东西并写入和空白空间或随机的负面东西。但是我不知道如何解决这个问题,这就是问题所在。感谢您的帮助!
#include <iomanip>
#include <iostream>
#include <string>
#include <istream>
#include <fstream>
using namespace std;
const char CD1fv[] = "Komplektai.txt";
const char CD2fv[] = "Parama.txt";
const char CRfv[] = "Turnyras.txt";
class Komplektas
{
private:
int eile;
int kiek;
string fig;
string spalva;
string vardas;
public:
Komplektas(int k = 0, string f = "", string s = "") :
kiek(k), fig(f), spalva(s) { }
~Komplektas() { }
void Deti(int k, string f, string s) { kiek = k; fig = f, spalva = s; }
void Eile(int e) { eile = e; }
void Vardas(string v) { vardas = v; }
string ImtiVarda() { return vardas; }
int ImtiEile() { return eile; }
string ImtiFigura() { return fig; }
int ImtiKieki() { return kiek; }
string ImtiSpalva() {return spalva; }
};
class Matrica
{
public:
static const int CMaxEil = 100;
static const int CMaxSt = 7;
private:
Komplektas A[CMaxEil][CMaxSt];
int n;
int m;
public:
Matrica(int nn = 0, int mm = 0) : n(nn), m(mm) { }
~Matrica() { }
int ImtiN() { return n; }
int ImtiM() { return m; }
void DetiN(int nn) {n = nn; }
void DetiM( int mm) { m = mm; }
void DetiReiksme( int i, int j, Komplektas r) {A[i][j] = r; }
Komplektas ImtiReiksme(int i, int j) { return A[i][j]; }
};
void Ivesti1(const char fv[], Matrica & A);
void Ivesti2(const char fv[], Matrica & A);
void Spausdinti1(const char fv[], Matrica & A);
void Spausdinti2(const char fv[], Matrica & A);
int main()
{
Matrica Figuros;
Ivesti1(CD1fv, Figuros);
Spausdinti1(CRfv, Figuros);
Ivesti2(CD2fv, Figuros);
Spausdinti2(CRfv, Figuros);
cout << "Pradiniai duomenys isspausdinti faile " << CRfv << endl;
cout << "Programa baige darba" << endl;
return 0;
}
void Ivesti1(const char fv[], Matrica & A)
{
int n, m;
string spalva;
string fig;
int eile, kiek;
Komplektas komplektas;
ifstream fd(fv);
fd >> n >> m;
A.DetiN(n);
A.DetiM(m);
fd.ignore();
for (int i = 0; i < n; i++){
fd >> eile;
komplektas.Eile(eile);
for (int j = 0; j < m; j++) {
fd >> fig >> kiek >> spalva;
komplektas.Deti(kiek, fig, spalva);
A.DetiReiksme(i, j, komplektas);
}
}
fd.close();
}
void Spausdinti1(const char fv[], Matrica & A)
{
Komplektas x;
ofstream fr(fv, ios::app);
for (int i = 0; i < A.ImtiN(); i++) {
fr << i+1;
for (int j = 0; j < A.ImtiM(); j++) {
x = A.ImtiReiksme(i , j);
fr << setw(5) << x.ImtiFigura() << " " << right
<< setw(6) << x.ImtiKieki() << " " << x.ImtiSpalva();
}
fr << endl;
}
fr << endl;
fr.close();
}
void Ivesti2(const char fv[], Matrica & A)
{
int n, m;
string spalva;
string fig;
string vardas;
int eile, kiek;
Komplektas komplektas;
ifstream fd(fv);
fd >> n >> m;
A.DetiN(n);
A.DetiM(m);
fd.ignore();
for (int i = 0; i < n; i++){
fd >> vardas;
komplektas.Vardas(vardas);
for (int j = 0; j < m; j++){
fd >> fig >> kiek >> spalva;
komplektas.Deti(kiek, fig, spalva);
A.DetiReiksme(i, j, komplektas);
}
}
fd.close();
}
void Spausdinti2(const char fv[], Matrica & A)
{
Komplektas x;
ofstream fr(fv, ios::app);
for (int i = 0; i < A.ImtiN(); i++) {
fr << x.ImtiVarda();
for (int j = 0; j < A.ImtiM(); j++) {
x = A.ImtiReiksme(i , j);
fr << setw(5) << x.ImtiFigura() << " " << right
<< setw(6) << x.ImtiKieki() << " " << x.ImtiSpalva();
}
fr << endl;
}
fr << endl;
fr.close();
}
【问题讨论】:
标签: c++ visual-c++ visual-studio-2012