使用Qt C ++设置手动位置并创建文件

use qt c++ set manual location and create file

本文关键字:位置 创建 文件 Qt 设置 使用      更新时间:2023-10-16

我刚刚开始学习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;
}

有几个问题需要解决。

  1. 使用 #include 包含必要的头文件
  2. "
  3. char"类型变量只包含一个字符,例如"A"。你需要使用 std::string 或 QString。
  4. 要使用变量,不要将其括在引号中,例如使用位置而不是"位置"。
  5. 完成文件后,请务必将其关闭。
  6. 确保函数始终返回预期值。 这里它应该返回一个整数。

因此,可以修复您的代码以获取以下内容:

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

您的变量位置只有一个字符,而不是字符串。如果你想使用Qt,那么你应该使用它的容器(QString)。在这里,您尝试创建具有位置current_dir/位置("的原因)的文件,但不在存储在变量中的位置上。

QFile file("location");

您没有Qt需要的QApplication(或QConsoleApplication)。您应该从创建Qt应用程序的基础知识开始。

我会通过以下方式重写你的代码:

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