Switch statement if/ofstream error

I don't know how to make this work correctly, this function carries a menu that gives the option to write to a file. I know that there is multiple ones that do practically the same thing but still I don't know how to do it correctly. I tried putting it on the outside, but still
1. Why do switch statements not like to write or read from files.
2. How can I improve on this code, or what can I change in this?

the function in its current state:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
void optioncon(string &username, string &admstatus)//yes
{
	string blah;
  int optx;
  char sex, RW;
  string full;
  string name;
  string line;
  string information;
  string myfile;
  string filename2;
  string bat;


if (admstatus == "God")
{
	bat = "";
	altmen(username, admstatus, bat);
}
else
{

cout << "Session: " << username << endl;
cout << "Option Con" << endl;
cout << "1. Write Information" << endl;
cout << "2. Read Information" << endl;
cout << "3. Edit Profile" << endl;
cout << "4. Display Profile Info." << endl;
cout << "5. Sign out" << endl;
cin >> optx;

	switch (optx)
	{

	case 1:
		RW = 'W'; //Read or Write
		filename2 = argon + username + "/information.txt";
		cout << filename2 << endl;
		cin >> information;

		break;

	case 2:
	//cin.ignore(optx, '\n');
		RW = 'R'; //Read or Write
		filename2 = argon + username + "/information.txt";
		break;

	case 3:
		RW = 'W';
		cout << "Full Name: ";
		cin >> full;
		cin >> name;
		cout << "  F/M: \n";
		cin.ignore('\n');
		cin >> sex;
		cin.ignore('\n');
		cout << endl;
		filename2 = argon + username + "/profile.txt";
		break;

	case 4:
		cout << "This is four...GREAT\n";
		break;

	case 5:
		cout << "This is fiiive.\n";
		break;

default:
	cout << errorset << " 1 \n";

}


	if (myfile == argon + username + "/profile.txt")
	{
		ofstream myfile (filename2.c_str());

		if (myfile.is_open())
		{
			myfile << full << " ";
			myfile << name << endl;
			myfile << sex << endl;
			myfile.close();
//cin.ignore(10, optx);
			optioncon(username, admstatus);
		}
	}

else if (myfile == argon + username + "/information.txt")
{
	if (RW == 'R')
	{
		ifstream myfile (filename2.c_str());
if (myfile.is_open())
{
  while ( myfile.good() )
  {
    getline (myfile,line);
    cout << line << endl;
  }

  myfile.close();
  optioncon(username, admstatus);
}

else
{
     //cin.ignore(optx);
     cout << errorset << " 2 \n";
}
	}
	else if (RW == 'W')
	{
		ofstream myfile (filename2.c_str());

if (myfile.is_open())

{
 myfile << information << endl;
 myfile.close();
 optioncon(username, admstatus);

}
else
{
    cout << errorset << " 3 \n";
	 optioncon(username, admstatus);
}

cin.ignore(100, '\n');
optioncon(username, admstatus);
	}
	}
	}
}

p.s. All of my code is kind of screwed up because I have been using functions like "gotos"; Just a heads up.
Topic archived. No new replies allowed.