使用Qt C ++设置手动位置并创建文件
use qt c++ set manual location and create file
我刚刚开始学习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 包含必要的头文件 "
- char"类型变量只包含一个字符,例如"A"。你需要使用 std::string 或 QString。
- 要使用变量,不要将其括在引号中,例如使用位置而不是"位置"。
- 完成文件后,请务必将其关闭。
- 确保函数始终返回预期值。 这里它应该返回一个整数。
因此,可以修复您的代码以获取以下内容:
#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;
}
相关文章:
- 创建一个类来访问和指定向量类型,并构建一个获取位置并为其分配区域的类
- glfw 在创建之前/创建时实例化窗口位置
- 更改球体的位置而不重新创建球体
- 创建 2D 数组0xCCCCCCCC访问冲突写入位置
- 创建一个函数以在给定位置将元素插入到列表中
- 如何正确删除一行控件并在该位置动态创建一个新控件
- 尝试在自定义 QT 创建器文本编辑器中创建查找和替换循环.我似乎无法设置光标位置
- unordered_map emplace-如何在适当的位置创建对象
- 创建相对于世界位置而不是屏幕位置的形状
- 在数组中创建位置层次结构
- 尝试创建结构对象,在位置0x3FE00000中创建访问冲突写入错误
- 应删除传递参数时创建对象的位置
- 使用新的位置来创建静态常量指针,指向静态内存缓冲区
- 创建一个从前缀到C 中字符位置的新字符串
- 我创建的c++istream对象和cin之间的区别在哪里,它在库中的可见位置在哪里
- 创建新数组时写入位置时发生访问冲突
- 在磁盘C 上的特定位置中创建队列
- 类在同一内存位置创建另一个类的多个对象(C++)
- c++初始化器不断地在同一内存位置创建新对象
- 我们可以在内存中的指定位置创建一个类类型的实例吗