草庐IT

c++ - 如何打印出文件的内容? C++ 文件流

我正在使用fstream和C++,我想让我的程序做的就是将我的.txt文件的内容打印到终端。这可能很简单,但我在网上看了很多东西,但找不到任何对我有帮助的东西。我怎样才能做到这一点?这是我到目前为止的代码:#include#includeusingnamespacestd;intmain(){stringoutput;ifstreammyfile;ofstreammyfile2;stringSTRING;myfile.open("/Volumes/LFARLEIGH/Lucas.txt");myfile2>STRING;cout提前致谢。如果这很简单,请原谅我,因为我对C++很陌生

c++ - 如何返回 fstream (C++0x)

我想我会直接进入它并从代码开始:#include#include#includeclasstest:publicstd::ofstream{public:test(conststd::string&filename){this->open(gen_filename(filename));};test(consttest&)=delete;//test(test&&old)=default;//Didn'tcompiletest(test&&old){};private:std::stringgen_filename(conststd::string&filename){returnfi

c++ - 在 AIX 上使用 ofstream

我正在尝试在AIXBox上编写一个简单的C++程序。程序如下:#include#includeusingnamespacestd;intmain(){ofstreamof;of.open("license.txt");of我的LDFLAGS设置如下:-maix64-L/disk3/TOOLS/GCCTools/gcc-4.5.1/lib/ppc64\-L/disk3/TOOLS/GCCTools/gcc-4.5.1/lib/gcc/powerpc-ibm-aix6.1.0.0/4.5.1/ppc64\-L/disk3/TOOLS/GCCTools/gcc-4.5.1/lib/gcc/p

c++ - 使用 C++ 写入二进制文件 : does the default locale matter?

我的代码使用设置了二进制标志的fstream和使用未格式化的I/O函数读取和写入来操作二进制文件。这在我曾经使用过的所有系统上都能正常工作(文件中的位完全符合预期),但这些基本上都是美国英语。我一直想知道这些字节是否可能被不同系统上的codecvt修改。听起来标准说使用未格式化的I/O与使用sputc/sgetc将字符放入streambuf的行为相同。这些将导致调用streambuf中的溢出或下溢函数,并且听起来这些会导致通过某些codecvt的东西(例如,请参阅c++标准中的27.8.1.4.3)。对于basic_filebuf,此codecvt的创建在27.8.1.1.5中指定。这

c++ - 如何从 fstream 中准确读取 128 个字节到字符串对象中?

这个问题在这里已经有了答案:Readingdirectlyfromanstd::istreamintoanstd::string(6个答案)关闭6年前。如何从fstream中准确读取128个字节到字符串对象中?我写了一些代码来读取文件的前128个字节并打印它,然后读取文件的最后128个字节并打印它。最后一部分有效,因为您可以轻松地迭代到EOF,但是我如何从前面准确地获取128个字节?下面的代码不起作用,因为您不能将128添加到ifstream迭代器,它不可索引,只能递增(看起来)。当然我可以创建一个迭代器并*++它128次,但必须有一个简单的单行方法来完成它,对吧?#include#i

c# - 通过 CLI 将 fstream(或等价物)从 C# 传递到 C++

如何通过CLI将fstream或等同物从C#传递到非托管C++DLL?粗略的申请大纲:C#应用程序从数据库中读取二进制文件非托管C++dll用于“解码”此文件并返回其中包含的信息我可以修改任何C#代码。CLI包装器是我可以修改的C++端的唯一部分。我目前正在将二进制文件保存到磁盘并将它的路径传递给CLI包装器,在那里它作为fstream打开。这对于测试目的来说很好,但出于明显的原因不适用于生产。我也研究过将字节数组传递给DLL,但除了使用GlobalAlloc,我找不到将其转换为fstream的方法,我宁愿不使用它。如有任何帮助或想法,我们将不胜感激。谢谢。

c++ - 使用指针将 char* 转换为 unsigned char*

我正在编写一些使用fstreamread()函数的代码,该函数需要一个char*作为缓冲区。稍后,我想将此缓冲区中的字节作为无符号字符使用,因此我要么必须:1.将缓冲区声明为char*,然后稍后为每个元素执行static_casts,2.声明缓冲区作为unsignedchar*然后在我将它传递给读取函数时执行reinterpret_cast,或者3.将缓冲区声明为char*并创建一个转换指针,我将其用于将缓冲区作为unsignedchar进行访问。这是一个片段:char*buf=newchar[512];unsignedchar*ubuf=reinterpret_cast(buf);f

c++ - 为什么我要打开一个没有 std::ios::binary 的文件 (std::ifstream)?

这可能属于StackExchange的不同部分,但我不这么认为-programmers.se更多的是关于其他事情。进入问题:有些事情可以用std::ios::binary做,但在文本模式下不能做(例如,相对搜索),但我找不到在文本模式下可以做的,你不能在二进制模式下做的事情模式-甚至将文件作为文本读取,例如std::getline()那么为什么我会以文本形式打开呢?作为一个可能相关的问题,为什么不默认打开二进制文件?这会破坏谁的用例?编辑附加信息这是让我问的原因:我有一个在Windows系统上创建的文件-也就是说,行结尾是CRLF。我使用std::ios::binary标志用std::

c++ - 在函数中返回 ifstream

这可能是一个非常菜鸟的问题:我如何(如果可能的话)从函数返回ifstream?基本上,我需要从用户那里获取数据库的文件名,如果具有该文件名的数据库不存在,那么我需要为用户创建该文件。我知道该怎么做,但只能要求用户在创建文件后重新启动程序。我想尽可能避免给用户带来不便,但下面的函数无法在gcc中编译:ifstreamgetFile(){stringfileName;cout>fileName;ifstreamfirst(fileName.c_str());if(first.fail()){cout编辑:抱歉,忘了告诉您编译器错误的位置和内容:main.cpp:45:note:synthe

c++ - 用于 C++ 的 Linux 中的低级磁盘操作

linux中有哪些方法可以在C++中进行低级磁盘操作?我正在尝试在磁盘上编写自己的数据管理器。例如,我想在Linux环境中创建一个C++程序,在磁盘上分配一定数量(连续),然后自由地允许我读/写那block数据。我不认为我想使用标准的fstream::open,因为这样文件由操作系统管理,我可能无法在磁盘上获得连续的部分。谢谢。 最佳答案 通常,Linux中用户程序1的“低级”磁盘操作涉及打开磁盘特殊设备。在我的计算机上,这些名称称为“/dev/sda”或“/dev/sda4”甚至“/dev/disk/by-uuid/2a5150b