iostream 相关问题

C ++ iostream库是一个面向对象的库,它使用流提供输入和输出功能。 iostreams类支持内置类型的类型安全I / O,并且可以通过重载>>和<<运算符来扩展以支持用户定义的类型。

关于标准输入流 std::cin 及其如何解析 double 和 ints 的问题

我正在阅读编程:使用 C++ 的原理和实践。目前我正在做第三章的练习,但是有一个问题难住了我。现在我可以让代码正常工作了,但我是

回答 1 投票 0

如何用C++流输出小数点后3位?

给定一个float类型的变量,如何使用C++中的iostream输出小数点后3位数字?

回答 6 投票 0

使用 cout 打印正确的小数位数

我有一个浮点值列表,我想用带有两位小数的 cout 打印它们。 例如: 10.900 应打印为 10.90 1.000 应打印为 1.00 122.345 应打印为...

回答 14 投票 0

iostream 链接器错误

我有一些旧的 C 代码,我想将它们与一些 C++ 代码结合起来。 以前的C代码有以下内容: #包括 #包括 #包括 我有一些旧的 C 代码,我想将它们与一些 C++ 代码结合起来。 以前的C代码有以下内容: #include <windows.h> #include <stdio.h> #include <string.h> #include "mysql.h" 现在我正在尝试让它使用 C++ 和 iostream,如下所示: #include <windows.h> #include <stdio.h> #include <string> #include <iostream> #include "mysql.h" 但是我在编译时不断收到以下链接器错误: [链接器错误]未定义对 `std::string::size() const' 的引用 [链接器错误]未定义对 `std::string::operator[](unsigned int) const' 的引用 [链接器错误]未定义对 `std::string::operator[](unsigned int) const' 的引用 [链接器错误]未定义对 `std::string::operator[](unsigned int) const' 的引用 [链接器错误]未定义对 `std::ios_base::Init::Init()' 的引用 [链接器错误]未定义对 `std::ios_base::Init::~Init()' 的引用 ld 返回 1 退出状态 我该如何解决这个问题? 编辑:我的编译器是Dev-C++ 4.9.9.2 C string.h 标头和 C++ string 标头不可互换。 不过,总的来说,您的问题是文件已正确编译,但链接了错误的运行时库。 Dev-C++ 使用 GCC。 GCC 可以根据文件扩展名正确确定文件中的语言,但不会链接正确的运行时库,除非您特别要求它(在命令行中-lstdc++)。将 GCC 称为“g++”(或者,在您的情况下,“mingwin32-g++”)也将获得正确的语言,并将链接所需的库。 您需要链接到您的 C++ 运行时。这取决于您的平台和编译器,但将 -lc 添加到链接器命令中可能会做到这一点。 因此可能会使用您的 C++ 编译器而不是 ld 进行链接。 无论如何,如果您希望 C++ 代码正常工作,您可能必须使用 C++ 编译器而不是 ld 进行链接——通常需要异常和静态初始化程序才能正常工作... 尝试使用 Cygwin 进行编译时,我遇到了同样的错误 (g++)。 将 -L/usr/local/bin -L/usr/lib 添加到编译命令应该可以工作。 这可能是 Cygwin 特有的,但它也可能有助于解决您的问题。

回答 3 投票 0

eofbit 在 C++98 中未使用清除设置

我必须编写一个家庭作业程序,使用 std::cin 和 std::getline() 读取一些用户输入,但指定该程序仅在键入 EXIT 时退出。 我目前正在尝试...

回答 2 投票 0

eofbit 在 C++ 中未使用clear设置

我必须做一个作业程序,使用 std::getline() 读取 std::cin 中的一些用户输入,但指定程序仅在键入 EXIT 时退出 我目前正在努力获得

回答 1 投票 0

std::endl 和 ' 有什么区别 '

我已经阅读了 std::endl 和 ' 之间的区别 ' 是 std::endl 刷新缓冲区并且 ' ' 没有。然而,据我所知,linux 上的 stdout 无论如何都是行缓冲的,所以这是否意味着 std::

回答 3 投票 0

如何在C++中打印Unicode字符

我正在尝试打印一个俄语“ф”(U+0444 西里尔小写字母 EF)字符,该字符的十进制代码为 1092。使用 C++,如何打印出该字符?我本以为

回答 11 投票 0

打印西班牙语(或意大利语)口音和 ñ

当我读取包含特殊字符(例如 á ó ñ ü è)的文件,然后在命令提示符中打印它们时,我遇到了问题。 在下面的示例中,读取的文件具有“正常字符...

回答 1 投票 0

流输出的 printf %g 标志等效(例如 std::cout)?

如果我需要打印浮点数 x 我通常使用 printf("%g", x) 因为这对我来说是最简单和最方便的以人类可读的方式输出浮点数的方法.. .

回答 1 投票 0

含有中文内容的CSV文件显示未知字符

我的项目根据所选语言生成 CSV 格式的报告。我们支持 17 种语言,其中亚洲语言(例如中文/日语和韩语)无法使用。里面的内容显示出一些未知的内容

回答 1 投票 0

如何使用 ostream& 将文件提取的数据传递到数组中到打印函数? (C++)

我正在尝试使用两个功能 - 从文本文件读取数据并将其存储到结构体格式化的数组中 通过 ostream& 打印数组数据 常量 int 最大行数 =20; //跨3列 结构

回答 1 投票 0

如何使用 cout 打印 0x0a 而不是 0xa?

如何使用 cout 打印 0x0a,而不是 0xa? #包括 使用 std::cout; 使用 std::endl; 使用 std::hex; int main() { 计算<< hex << showbase <<...

回答 10 投票 0

C++ 无法理解析构函数调用

这个程序是用自定义类A设计的,当调用复制构造函数时输出1,当调用析构函数时输出0。我在程序里复制了两次,删除了两次,还是不行……

回答 1 投票 0

当我可以使用换行符时为什么要使用endl? [重复]

当我只能使用时,是否有理由将 endl 与 cout 一起使用 ?我的 C++ 书上说要使用 endl,但我不明白为什么。是 没有像 endl 那样广泛支持,或者我错过了什么?

回答 3 投票 0

如何通过构造函数注入std::basic_istream而不显式指定<CharT,Traits>

我正在编写模板化的 CSVParser 类,它从任何 basic_istream 对象读取数据并将其转换为给定类型的 std::tuple : 模板 类 CSVParser {

回答 1 投票 0

这个流缓冲区有什么问题?

我的overflow()有什么问题吗?当我打印 oss.str() 时,它打印“Hello, Wor”而不是“Hello, World”。我做错了什么? #包括 #包括 #包括 我的overflow()出了什么问题。当我打印 oss.str() 时,它会打印 "Hello, Wor" 而不是 "Hello, World"。我做错了什么? #include <iostream> #include <vector> #include <string> #include <sstream> class io_buffer : public std::streambuf { public: io_buffer(std::ostream& os, int buf_size = 4) : os_(os), buffer(buf_size) { os_.clear(); char* beg = buffer.data(); setp(beg, beg + buffer.size()); } int_type overflow(int_type c) { if (os_ && !traits_type::eq_int_type(c, traits_type::eof())) { *pptr() = traits_type::to_char_type(c); pbump(1); if (flush()) { setp(buffer.data(), buffer.data() + buffer.size()); return c; } else return traits_type::eof(); } return traits_type::not_eof(c); } bool flush() { return os_.write(pbase(), pptr() - pbase()); } int sync() { return flush() ? 0 : -1; } private: std::ostream& os_; std::vector<char> buffer; }; int main() { std::ostringstream oss; io_buffer buf(oss); std::ostream os(&buf); std::string str("Hello, World"); os << str; std::cout << oss.str() << std::endl; } 您还需要冲洗std::vector(缓冲区),即: int_type overflow(int_type c) { if (os_ && !traits_type::eq_int_type(c, traits_type::eof())) { *pptr() = traits_type::to_char_type(c); pbump(1); if (flush()) { buffer.clear(); // <- setp(buffer.data(), buffer.data() + buffer.size()); return c; } else return traits_type::eof(); } return traits_type::not_eof(c); } 更好,因为 0x499602D2 地址建议使用 pbump(-buffer.size()) 以避免多次调用 overflow()。 问题是你使用: setp(beg, beg + buffer.size()); 并且在overflow()中添加新元素而不重新分配,结束指针应该是可访问的(如果您不想重新分配),否则您需要在overflow()中重新分配缓冲区。所以改成: setp(beg, beg + buffer.size() - 1); 在 io_buffer 构造函数中 稍后在溢出中将 setp 更改为: pbump(-(pptr() - pbase())); 还要刷新缓冲区添加 endl: os << str << endl; 工作示例: http://coliru.stacked-crooked.com/a/7c72ecfe78bb2aee

回答 2 投票 0

从文件读取时出现浮点异常

程序应读取 2 个文件(author.dat 和 itation.dat)并将它们保存到地图和集合中; 首先它毫无问题地读取引文列表,然后它似乎正确地读取了作者并且......

回答 1 投票 0

C++中有二进制内存流吗

我通常使用stringstream写入内存字符串。有没有办法以二进制模式写入字符缓冲区?考虑以下代码: 字符串流; << 1 << 2 << 3;...

回答 7 投票 0

为什么 gcc 13.1 在包含 <iostream> 时不生成任何代码?

假设我有一个非常简单的程序,如下所示: #包括 int main() { 返回12; } 当用 gcc 编译这个程序时(从 gcc-4.x 到 gcc-12.x),生成的代码是

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.