在C++中写入用户指定的文件
Write to user specified file in C++
我可以指定要在C++中写入的文件吗?我希望能够键入文件名并写入该文件。当我尝试制作myfile.open("example.txt")
myfile.open(var)
时,我得到了一个大错误。。。
错误:对"std::basic_ofstream>::open(std::string&)"的调用没有匹配的函数/usr/include/c++/4.2.1/fstream:650:注意:候选为:void std::basic_ofstream<_CharT,_Traits>::打开(const char*,std::_Ios_Openmode)[其中_CharT=char,_Trait=std::char_Traits]
你能理解这一点吗?或者解释一下我做错了什么?我觉得这很简单,因为这是我使用C++的第一周。
如果var
是std::字符串,请尝试:
myfile.open(var.c_str());
错误告诉你到底出了什么问题,尽管命名的模板类型的精度并不能帮助你清楚地知道。看看.open()的引用。它使用const char *
作为文件名,以及另一个可选的模式参数。你传递的不是const char *
。
正如错误所说,它试图用字符指针匹配参数,而std::string不是字符指针。但是std::string::c_str()将返回一个。
尝试:
myfile.open(var.c_str());
简而言之,是的,您可以指定一个文件以多种不同的方式打开和写入。如果你使用的是fstream,并且想要写出纯文本,这是一种方法:
#include <string>
#include <fstream>
int main()
{
std::string filename = "myfile.txt";
std::fstream outfile;
outfile.open( filename.c_str(), std::ios::out );
outfile << "writing text out.n";
outfile.close();
return 0;
}
var
是std::string
吗?如果是这样的话,您应该传递var.c_str()
,因为.open()
的变体不需要std::string
。
您的变量是string
、char[]
还是char*
?我认为open()方法想要一个c风格的字符串,它应该是char[]
或char*
,所以当你传入它时,你需要在字符串上调用.c_str()
方法:
myfile.open(var.c_str());
open调用还有第二个参数。它应该像myfile.open("example.txt",fstream::out)
错误消息非常清楚。它说:basic_ofstream
类(您的文件对象)没有一个名为"open"的成员函数,并且只接受一个类型为string
(您的var
)的参数。您需要从string
转到const char *
——为此,您使用var.c_str()
。
- 以非特权用户身份查询 NTFS 特殊文件的元数据?
- 用户输入字符串的文件附加问题..C++
- MAKE:找不到包含的用户定义的头文件?
- 从标准输入读取文件后读取用户输入
- 限制用户可以在 QFileDialog 中选择的文件数量
- 如何在公共头文件中向库的用户公开枚举,同时在内部使用它?
- Windows 后台服务(系统配置文件)无法使用 C++ 访问 win 10 上的用户 appData 文件夹?
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- Arduino-Makefile:编译器无法编译用户库 cpp 文件
- 将所有 *.txt 文件合并到一个文本文件中,其名称由用户使用 C++ 提供
- 如何在 c++ 中将密码和用户名保存到 .txt 文件中.如果用户尝试登录,我仍然希望能够检索它们
- 尝试将文本文件中的整数替换为用户输入的整数 [C++]
- 尝试读取.txt文件并根据用户输入的字母拉出特定行
- Win7 C++ - 从以用户身份登录的服务启动可执行文件的问题
- 可以将Boost消息队列文件重定向到用户指定的位置
- 在 Win32 应用中,如果未选择文件夹并且用户单击"确定",则文件夹选择对话框将关闭
- 是否可以用类似C/C++(或任何语言)的语言,从作为用户输入的字符串或文件中创建用户定义的数据类型
- 读取用户必须提供一些参数的文件
- g++ 生成依赖项文件缺少用户定义的标头
- 用户使用C++中的删除功能删除文件