我仍然非常喜欢c ++,编码和一般,所以请耐心等待。
最近,在我的计算机科学课上,我被要求制作一个充当电话簿的程序,能够保存不同联系人的信息,例如姓名,地址,电话号码和电子邮件。
电话簿的组织方式如下:
名称
地址
电话号码
电子邮件
姓名2
地址2
电话号码2
电子邮件2
因此,您可以预测哪条线包含哪些信息,并将其保存在结构的矢量中。我的代码是这样的:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
struct Contact {
string name;
string address;
string phone;
string email;
};
string line;
vector<Contact> contacts;
int main(){
ifstream phonebook;
phonebook.open("phonebook.txt");
if (phonebook.is_open()){
int counter = 0;
int contactCounter = 0;
while( getline(phonebook,line) ){
//cout << "line is " << line;
if(line.length()<=0){
cout << "In the if";
}else{
if(counter % 4 == 0){
contacts[contactCounter].name = line;
cout << counter;
}else if(counter % 4 == 1){
contacts[contactCounter].address = line;
}else if(counter % 4 == 2){
contacts[contactCounter].phone = line;
}else if(counter % 4 == 3){
contacts[contactCounter].email = line;
contactCounter++;
}
}
counter++;
}
} else cout << "an error has occurred in opening the contact list";
cout << "Address of contacts[0]: " << contacts[0].address; //a test to see if it worked
return 0;
}
(我还有一个预先制作的文本文件来测试它) 但是每次我运行程序时它都会停止然后退出。任何信息?很抱歉,我无法很好地解释我的思维过程。
答案 0 :(得分:2)
您的矢量在此处为空:vector<Contact> contacts;
。您需要push_back
(或emplace_back
,如果您不在遗留C ++上,并且允许更改您的类定义以包含用户定义的构造函数)每个新元素。