這是一個長度指示字段 的實現,但它掛起,我認爲卡在一個循環,並沒有顯示任何東西。這段代碼「長度指示器實現」有什麼問題?
// readx22.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "stdio.h"
using namespace std;
class Student
{
public:
string id;
size_t id_len;
string first_name;
size_t first_len;
string last_name;
size_t last_len;
string phone;
size_t phone_len;
string grade;
size_t grade_len;
void read(fstream &ven);
void print();
};
void Student::read(fstream &ven)
{
size_t cnt;
ven >> cnt;
id_len=cnt;
id.reserve(cnt);
while (-- cnt) {
id.push_back(ven.get());
}
ven >> cnt;
first_len=cnt;
first_name.reserve(cnt);
while (-- cnt) {
first_name.push_back(ven.get());
}
ven >> cnt;
last_len=cnt;
last_name.reserve(cnt);
while (-- cnt) {
last_name.push_back(ven.get());
}
ven >> cnt;
phone_len=cnt;
phone.reserve(cnt);
while (-- cnt) {
phone.push_back(ven.get());
}
ven >> cnt;
grade_len=cnt;
grade.reserve(cnt);
while (-- cnt) {
grade.push_back(ven.get());
}
}
void Student::print()
{
// string::iterator it;
for (int i=0 ; i<id_len; i++)
cout << id[i];
}
int main()
{
fstream in;
in.open ("fee.txt", fstream::in);
Student x;
x.read(in);
x.print();
return 0;
}
感謝
您可能想寫入控制檯所有的東西來查明問題,例如什麼'cnt'包含。當你編寫記錄時也會顯示代碼,因爲根據類聲明的方式來判斷,可能會認爲字符串之後有長度。 – 2010-04-25 06:03:39