Я только начинаю изучать c++, и я пытаюсь установить ручное расположение для создания файла, но у меня здесь проблемы.
у вас есть идея решить эту проблему?
int main()
{
char location;
std::cin>>location;
QFile file("location");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return 1;
QTextStream out(&file);
out << "The magic number is: " << 49 << "\n";
}
Другие ответы уже затронули большинство вопросов. Я хотел бы указать, что вы можете использовать текстовые потоки Qt для доступа к стандартным входам и стандартным выводам, просто чтобы сохранить все Qt. Это помогает с размером исполняемого файла, если вы хотите связать свой проект статически - вам не нужно связывать потоки C++ или строку.
#include <QFile>
#include <QString>
#include <QTextStream>
#include <cstdio>
int main()
{
QTextStream in(stdin), out(stdout); // the input and output streams, Qt way
out << "Enter file location: " << flush;
QString location = in.readLine(); // this should store the file location
QFile file(location);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return 1;
QTextStream fout(&file);
fout << "The magic number is: " << 49 << "\n";
return 0;
}
Существует несколько проблем, которые необходимо решить.
Таким образом, ваш код может быть исправлен для получения этого:
#include <string>
#include <iostream>
#include <QFile>
#include <QTextStream>
int main()
{
std::string location;
std::cin >> location;
QFile file(location.c_str());
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return 1;
QTextStream out(&file);
out << "The magic number is: " << 49 << "\n";
file.close();
return 0;
}
Я бы переписал код следующим образом:
int main()
{
std::string location; // this should store the file location
std::getline(std::cin, location); // read user input for file location
QFile file(location);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return 1;
QTextStream out(&file);
out << "The magic number is: " << 49 << "\n";
return 0;
}
Ваше местоположение переменной - это только один символ, а не строка. Если вы хотите использовать Qt, вы должны использовать его контейнеры (QString). Здесь вы пытаетесь создать файл с местоположением current_dir/location (причина ""), но не по месту, хранящемуся в вашем var.
QFile file("location");
У вас нет QApplication (или QConsoleApplication), который требуется Qt. Вы должны начать с основ создания приложений Qt.