因此,我试图重载>>操作符,但在本例中,我得到了一个以null结尾的字符串。如何让用户只输入足够的字符,使我的动态分配的char[]命名数据,并分配它。我知道有一种方法可以让我制作一个非常大的临时char[],然后使用for循环来复制它们,但我想在不制作非常大的char[]的情况下这样做。我现在有这段代码,但我知道它不能工作,因为我的类中允许的长度被传入。
std::istream & operator>>(std::istream & is, String346 & objIn) {
using std::istream;
is >> objIn.data;
return is;
}发布于 2016-04-10 11:07:49
从技术上讲,C++语言没有规定禁止用户为char数组“只输入足够的字符”。可能有一些特定于操作系统的资源可供您使用,例如限制文本输入字段中的最大字符数,但这超出了C++的范围。
在读取std::istream时,您的代码必须准备好处理和处理不符合您的条件的输入。抛出异常,在打印错误消息后退出程序,或者读取到您可以接受的最大字符数并忽略多余的字符--以任何对您有意义的方式。这完全取决于你。
发布于 2016-04-10 12:22:41
std::istream::get()有一个重载,允许您限制输入的大小。不过,您仍然需要以某种方式处理剩余的输入。
https://stackoverflow.com/questions/36525244
复制相似问题