используйте qt c ++, установите местоположение вручную и создайте файл

0

Я только начинаю изучать 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";
}
Теги:
file
qt

4 ответа

2

Другие ответы уже затронули большинство вопросов. Я хотел бы указать, что вы можете использовать текстовые потоки 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;
}
1

Существует несколько проблем, которые необходимо решить.

  1. используйте #include для включения необходимых файлов заголовков
  2. Типичная переменная 'char' содержит только один символ, например 'A'. Вам нужно использовать std :: string или QString.
  3. Чтобы использовать переменную, не добавляйте ее в кавычки. например, используйте местоположение вместо "location".
  4. всегда закрывайте файл после того, как вы закончите с ним.
  5. убедитесь, что ваша функция всегда возвращает ожидаемое значение. здесь он должен возвращать целое число.

Таким образом, ваш код может быть исправлен для получения этого:

#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;
}
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;
}
0

Ваше местоположение переменной - это только один символ, а не строка. Если вы хотите использовать Qt, вы должны использовать его контейнеры (QString). Здесь вы пытаетесь создать файл с местоположением current_dir/location (причина ""), но не по месту, хранящемуся в вашем var.

QFile file("location");

У вас нет QApplication (или QConsoleApplication), который требуется Qt. Вы должны начать с основ создания приложений Qt.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню