У меня есть файл с именем myPoints.txt в c:\\....\mydocuments
. Он содержит список нескольких x, y точек (например, 3.4.5.6). Я пытаюсь открыть его, используя ifstream. Как только я вхожу в каталог файлов я получаю сообщение об ошибке выполнения, и программа закрывается. (Например, ... c:\mydocuments\myPoints.txt
)Как прочитать путь к файлу из ввода на C++, чтобы вы могли открыть txt-файл?
- Как я введен правильный реж файл?
- Есть ли чистый способ поместить этот код в функцию с «ifstream ifs» в качестве параметра?
Вот мой файл кода открытия:
int main()
{
cout << "Please enter the file name: ";
string name;
cin >> name;
ifstream ifs(name.c_str());
if (!ifs) error("can't open input file ", name);
vector <Point> points;
Point p;
while (ifs >> p) points.push_back(p);
// ....
}
Не уверен, что, если проблема в моей функции ifstream поэтому я добавлю на всякий случай:
ifstream& operator >>(ifstream& ifs, Point& p)
{
double x, y;
char comma;
ifs >> x >> comma >> y;
if (!ifs) return ifs;
if (comma != ',') {
ifs.clear(ios_base::failbit);
return ifs;
}
p = Point(x, y);
return ifs;
}
Не уверен, что проблема в моей функции ifstream, поэтому я добавлю ее на всякий случай: ifstream & operator >> (ifstream & ifs, Point & p) { double x, y; char comma; ifs >> x >> comma >> y; если (! Ifs) \t возвращение если; if (comma! = ',') \t { \t ifs.clear (ios_base :: failbit); \t возвращение ifs; \t} p = Точка (x, y); return ifs; } – user2904033
Да, вы можете ввести полный путь к файлу. Главное, что вам нужно набирать все это правильно (например, по крайней мере, в большинстве мест, вам нужно место в «Мои документы»). Также обратите внимание, что 'cin >> name;' будет читать только до первого символа пробела. Вероятно, вы хотите 'std :: getline (cin, name);', поэтому он будет читать целую строку. –
Не публикуйте код в комментариях, отредактируйте его в вопросе. – Angew