所以我试图重载 >>
运算符,但在这种情况下,我得到了一个以空字符结尾的字符串。如何让用户只输入我动态分配的足够的字符 char[]
命名数据并分配它。我知道可能有一种方法可以制作一个非常大的临时 char[]
并使用 for 循环将它们复制进去,但我想在不制作非常大的 字符[]
。我现在有这段代码,但我知道它不起作用,因为我的类(class)允许的长度被传入。
std::istream & operator>>(std::istream & is, String346 & objIn) {
using std::istream;
is >> objIn.data;
return is;
}
最佳答案
C++ 语言没有规定从技术上禁止用户为您的 char
数组“仅输入足够的字符”。可能有一些特定于操作系统的资源可供您使用,例如限制文本输入字段中的最大字符数,但这超出了 C++ 的范围。
从 std::istream
读取时,您的代码必须准备好处理不符合您标准的输入。抛出异常,在打印错误消息后退出程序,或者读取您可以接受的最大字符数并忽略多余的字符——以您认为有意义的任何方式。这完全取决于您。
关于c++ - 重载 >> 使用 istream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36525244/