Мой код выглядит так:
ifstream myfile;
string fileName;
cin >> filename;
myfile.open(fileName);
Я получаю довольно длинное сообщение об ошибке и не могу понять, как передать его в файл (я пробовал пару вещей и думал, что у меня могут не быть прав, поскольку я нахожусь на моем удаленном терминале), поэтому я взял снимок экрана.
Извините, если это табу, но это была самая быстрая вещь, о которой я мог думать. Строка, на которую он ссылается (main.cpp 22), является строкой
myfile.open(fileName);
Опять же, компилируется и работает отлично в Visual Studio 2013, но не в этой оболочке Linux. Честно говоря, если кто-нибудь может помочь мне понять сообщение об ошибке, которое будет началом.
Заранее благодарю за любую помощь
Вам нужно использовать флаг компилятора -std=c++11
. Следующая программа компилирует и строит на моей машине, используя:
g++ -Wall -std=c++11 test-484.cc -o test-484
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream myfile;
string fileName;
cin >> fileName;
myfile.open(fileName);
return 0;
}
Кстати, в вашем опубликованном коде у вас есть
string filename;
^^ lower case n not upper case N
myfile.open(filename.c_str());
должен быть совместим со старыми версиями C ++)
Если вы не используете С++ 11, вы также можете сделать следующее:
#include <iostream>
#include <fstream>
#include <string>
int main () {
std::ifstream myfile;
std::string fileName;
std::cin >> fileName;
myfile.open(fileName.c_str());
}
Но доступ к строке C непосредственно таким образом не очень хорош, если это возможно, следуйте рекомендациям R Sahu по использованию С++ 11.