C ++ iostream库是一个面向对象的库,它使用流提供输入和输出功能。 iostreams类支持内置类型的类型安全I / O,并且可以通过重载>>和<<运算符来扩展以支持用户定义的类型。
我的 ASCII 文件大小为 100 到 400 MB。 我想逐字节读取它们,就像读取数组一样。所以我可以像 if (file[pos] == ) ETC。 不过,我还有...
我在我的 C++ 程序中使用 GCC 内置类型 __int128 来处理一些事情,没有什么真正重要的,至少不足以证明仅为此而使用 BigInt 库,但是,足以预防......
在 Bjarne Stroustrups 使用 C++ 的原理和实践的第 11.2.1 章中,他展示了以下示例: cin.unsetf(ios::dec); // 不要假设十进制(这样 0x 就可以表示十六进制) cin.unsetf(ios::oct...
如何在没有科学记数法或尾随零的情况下将浮点数输出到cout?
在 C++ 中输出没有科学记数法或尾随零的浮点数的最优雅的方法是什么? 浮动a = 0.000001f; 浮点数 b = 0.1f; 计算<< "a: " << a << e...
我想问如何去掉小数点后面的零? 我读过很多有关它的主题,但我不太清楚它们。你能告诉我一些简单的理解方法吗? 例如...
我正在编写一个cpp程序来打印两个数字之间的所有素数。程序运行成功,但没有打印任何内容
#包括 使用命名空间 std; bool isPrime(int num){ for(int i=2;i<=num;i++){ if(num%i==0){ return false; } } return true; } int main() {...
iostream.h 中 conio.h 的 getch() 的替代函数?
我正在尝试使用头文件 将屏幕保留在输出上,但我不知道 中 的 getch() 和 clrscr() 函数有任何等效函数 我正在尝试使用头文件<iostream.h>将屏幕保持在输出上,但我不知道与getch()中的clrscr()和<conio.h>函数或任何其他函数等效的函数C++ 库。有这样的功能吗? <iostream.h> 函数是该语言的编译器扩展,而不是 C 或 C++ 的一部分。标准 C++ 中没有直接替代品。 对于 getch(), conio.h 可能是最接近的等效项 - 但请记住,这将从缓冲的标准输入中读取,而我认为 conio.h int ch = std::cin.get(); 执行无缓冲读取。 getch的任何实现都将非常依赖于平台——并非所有屏幕或终端都有清除的概念,并且那些确实有截然不同的方式来访问该功能。 如果您需要将终端视为一组字符流以外的东西,那么最好的选择可能是寻找一个向您隐藏底层终端、屏幕或控制台详细信息的库。如果您使用的是 UNIX 系统,请查看curses 或ncurses 库;我不知道对其他操作系统有什么建议。 getch() 和 clrscr() 将与 C++ 一起使用。包括 conio.h 但是,如果您不能(由于某种原因)包含 conio.h, cin>>dummy_var 带有一条显示消息要求用户按 Enter 键怎么样? 只需使用 cin.get(); 只需使用这两个功能即可: clrscr() Visual studio 和 Dev C++ 将其包含在其 fflush(stdin); getchar(); 标头中,因此无需包含额外的头文件。 这是我常用的: iostream 迟到的答案,您可以使用#include<iostream> ... std::getchar(); ,这应该适用于大多数编译器。如果这不起作用,请尝试添加另一个。 std::cin.get() 使用 int main () { // ... std::cin.get(); std::cin.get(); return 0x00; } 只能在 Windows 上使用,并且是一种坏编程习惯。这样做的原因是它实际上是“暂停”或“冻结”你的程序,而不是仅仅等待输入。 IE。按键退出。 对于system("PAUSE")我一般用 clrscr() 对于 system("cls"); //Windows system("clear"); // Linux 函数,我同意 getch() ,只需使用 cin.get() 2 次。@iKlsR 如果您希望将系统暂停一会儿或特定时间间隔,请使用: { ... std::cin.get(); std::cin.get(); } 基本上,函数system("sleep 5s"); //for linux 在终端中运行命令system("x")(类似)。因此,您可以通过使用不同的函数代替 x 来利用它。 (具体使用与您的发行版或操作系统相关的命令) 我知道这是一个老问题,但我还是要回答,因为人们可能正在寻找类似问题的答案。 x 是一个(古老的)Windows 和 MS-DOS/PC-DOS C 库,过去和现在仍然用于 Windows/DOS 环境中非常基本的裸机键盘输入和处理。 conio.h 和 getch() 都是此标头的非标准添加,对于标准 C 函数应尽可能避免。在 C 中,clrscr() 通常可替换为 getch()、scanf();在 C++ 中,可替换为 fread() 和 std::cin。至于std::cin.get,你能得到的最接近的是: clrscr() 或: 在 *nix 环境中还有 for(int i = 0; i < 100; i++) { printf("\n"); } 。 这里有一个链接,提供了一些相关信息。 conio.h 中的平台特定函数 ncurses.h 有两个特殊功能: 无字符回显。 无缓冲读取字符。 回显是由 C/C++ 环境之外的终端完成的。只能通过操纵终端来控制。此外,使用 iostream.h 标头几乎不可能获得无缓冲的 I/O。 因此,单独使用 iostream.h 不可能接近 getch()。 (周围有很多getch()实现,例如使用 termios.h 来禁用回显。) 您可以使用 system("pause"),它会生成“按任意键继续”消息。但它只适用于windows环境。我认为所有的“系统”命令都是dos命令。如果我错了请纠正我 如果您在 Windows 上工作,您可以使用系统(“暂停”),这会给您“按任意键继续”消息。
如何从用户输入中收集双精度值并使用指向“向量”的“指针”打印它们? [重复]
这是一段从用户输入中获取一些双精度数,然后打印它们的代码。 输入看起来像这样 1 2 3 4.5 x,其中 x 是任意非双精度值,用于打破第一个 for 循环。 然而,它出现段错误...
我正在尝试更多地了解 I/O 流在 C++ 中如何工作,但我真的很困惑何时使用什么。 Streambuf 到底是什么? 与字符串相比,我什么时候使用streambuf...
我编写了以下代码,允许用户输入一个数组并给出该数组中的最大值和最小值 当我输入数组值的长度 = 4 且数组元素为:- 32,152,38 时...
将 boost::filesystem 与 std::ifstream 一起使用?
我正在使用带有 C++ 20 和 boost 1.71.0 的 Ubuntu 20.04 LTS。 以下编译无错误并输出示例文件内容: #包括 #包括 #包括 我正在使用带有 C++ 20 和 boost 1.71.0 的 Ubuntu 20.04 LTS。 以下编译无误并输出示例文件内容: #include <iostream> #include <string> #include <boost/filesystem.hpp> #include <filesystem> int main() { boost::filesystem::path output_dir = boost::filesystem::path("/out/"); boost::filesystem::path sample_file = output_dir / "sample.txt"; std::ifstream ifs{sample_file}; std::string content((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>())); std::cout << "Sample file content: " << std::endl << content << std::endl; return 0; } 那么这是如何运作的呢?这是 boost::filesystem::path 隐式转换为 std::string 吗? 使用安全吗? Boost Filesystem fstream的文档表明: C++ 标准库的标头使用 const char* 来传递表示文件名的参数,该用法出现了七次。 文件系统库的 fstream.hpp 标头在命名空间 boost::filesystem 中提供等效组件,但七个 const char* 参数已被 const path& 参数替换。 文件系统库的 fstream.hpp 标头仅使用标准库组件作为基类,然后重新声明构造函数和打开函数以采用 const path& 类型而不是 const char* 类型的参数。 其使用记录在2 分钟教程和示例中。 std::basic_fstream有一个构造函数,它采用模板化的FSPath类型https://en.cppreference.com/w/cpp/io/basic_ifstream/basic_ifstream 这个重载应该只接受std::filesystem::path,但看起来像libstdc++接受任何符合std::filesystem::path接口的类。这是非标准的,不能与其他标准库一起编译:https://godbolt.org/z/njr5s3har 您可以使用 boost/filesystem/fstream.hpp 标题修复此问题,但您必须将 std::ifstream 更改为 boost::filesystem::fstream。更好的解决方法是改用 std::filesystem,这主要是 boost::filesystem 的替代品。
以线程安全的方式使用std::ios_base::pword()?
我想使用 pword() 来存储任何流的附加对象,但是以线程安全的方式,特别是第一次为给定流分配对象的一个实例。 ...
编辑: 经过一些评论后,这是我现在的代码,遵循此链接。(更好,但我仍然有错误) 从一切中: ostream& 运算符<<(ostream& out, Device& v) { out &...
我习惯了 Delphi VCL 框架,其中 TStream 会在错误时抛出异常(例如,文件未找到、磁盘已满)。我正在移植一些代码以使用 C++ STL,但被 iostreams 发现了......
我想将元组写入/读取到BIN文件中。我知道如何写入/读取元组的每个元素,但元组有 13 个元素,我宁愿使用循环一次完成所有这些元素。但我已经
我正在尝试使用 iostream 输出 C 数组。 对于整数数组,我写了这样的代码 模板 ostream& 运算符<< (ostream& os, const int (&x)[N]) { f...
如何使用 libjpeg 从 std::istream 读取 JPEG?
libjpeg 可以从 FILE* 或缓冲区读取 JPEG 数据。我的数据来自 std::istream。我可以将整个 std::istream 读入缓冲区以与 libjpeg 一起使用,但我宁愿让 libjpeg 读取
虽然这是一个很小的问题,但是每次当我需要循环打印一些数据时,如何安排分隔符总是让我像一只无聊的苍蝇一样烦恼。 例如: 标准::设置<...
虽然这是一个很小的问题,但是每次当我需要循环打印一些数据时,如何排列分隔字符总是让我像一只无聊的苍蝇一样烦恼。 例如: 标准::设置<...
我使用 Visual Studio Code,但 C++ 扩展存在问题。 当我包含 iostream 时,它会返回该错误: #include 检测到错误。请更新您的 includePath。花体...