Reading/ Writing Files

I have written the following code and want to pull data from a simple txt document into the program and write to a new text document, but whenever I run the program, my cout statement: Sorry, can't open file >> filename displays.
Not sure if it's an issue with the code or where I'm saving the file. Any ideas?
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
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

bool readFile(string (filename));

int main()
{
	string filename, firstName, lastName;
	string ofs = "results.txt"; //output file stream
	double salary;

	cout << "Enter the input file name: ";
	cin >> filename;

	bool fileExist = readFile(filename);
	if(fileExist)
	{
		ifstream ifs(ofs.c_str());
		if (ifs.is_open())
		{
			while (!ifs.eof())
			{
				getline(ifs, firstName, '\t');
				getline(ifs, lastName, '\t');
				ifs >> salary;
				cout << firstName << "\t" << lastName << "\t" << salary;

				if (ifs.eof())
				{
					break;
				}
				ifs.close();
			}
		}
		else
		{
			cout << "Can't open the file. " << ofs << endl;
		}
	}
	system("pause");
	return 0;
}

bool readFile(string filename) 
{
	string firstName, lastName;
	double hours, rate, salary;

	ifstream ifs(filename.c_str());
	if (ifs.is_open())
	{
		string outputFile = "results.txt";
		ofstream ofs(outputFile.c_str());

		while (!ifs.eof())
		{
			getline(ifs, firstName, '\t');
			getline(ifs, lastName, '\t');
			ifs >> hours >> rate;
			salary = hours * rate;
			ofs << firstName << '\t' << lastName << '\t' << salary;

			if (ifs.eof())
			{
				break;
			}
		}
		ifs.close();
		ofs.close();
		return true;
	}
	else
	{
		cout << "Sorry, can't open the file: " << filename << endl;
		return false;
	}
}
Last edited on
When you open a file without an absolute path it depends on the environment/IDE settings where the sytem is looking for the file. Usually somewhere near the .exe.

Try using an absolute path and make sure that you can read/write to that directory.

By the way: What would happen if the getline(...) on line 60 detects an eof?
Topic archived. No new replies allowed.