读书人

cingt;gt;string是如何取得输入流长度的呢

发布时间: 2012-05-27 05:42:30 作者: rapoo

cin>>string是怎么取得输入流长度的呢?
在做一个string的类,想重载>>,由于内存需要自己管理,在cin>>string时我想必须先取得输入流长度才能知道应该分配多少内存吧?应该怎么做呢?

[解决办法]
是先分配一段内存,然后push_back..
当不够了,再new copy,delete old
一直循环...
[解决办法]
string.size()???
[解决办法]

探讨
在做一个string的类,想重载>>,由于内存需要自己管理,在cin>>string时我想必须先取得输入流长度才能知道应该分配多少内存吧?应该怎么做呢?

[解决办法]
探讨
引用:
引用:
引用:
引用:
在做一个string的类,想重载>>,由于内存需要自己管理,在cin>>string时我想必须先取得输入流长度才能知道应该分配多少内存吧?应该怎么做呢?

cin遇到流缓冲中的eof就知道到达末尾了。


我是使用char *pStr存数据,动态内存分配。
我重载>>时是想cin>>pS……

[解决办法]
探讨
引用:
引用:
引用:
引用:
引用:
引用:
在做一个string的类,想重载>>,由于内存需要自己管理,在cin>>string时我想必须先取得输入流长度才能知道应该分配多少内存吧?应该怎么做呢?

cin遇到流缓冲中的eof就知道到达末尾了。


我是使用char *pStr存数……

[解决办法]
探讨
引用:

引用:
引用:
引用:
引用:
引用:
引用:
引用:
在做一个string的类,想重载>>,由于内存需要自己管理,在cin>>string时我想必须先取得输入流长度才能知道应该分配多少内存吧?应该怎么做呢?

cin遇到流缓冲中的eof就知道……

[解决办法]
string类自动管理长度。
楼主的想法真是舍近求远。
[解决办法]
重新发明轮子? 何不参考参考库里自带的方法呢
[解决办法]
似乎我也不懂
[解决办法]
自己设定一个变量或者常量
就像你用cin.get(str, N)
后面这个N是你给定的,而不是缓冲区长度
然后把str复制给string对象就行了。
[解决办法]
C/C++ code
    std::istream & operator>>(std::istream &is, string &s)    {        char* temp = new char[string::CINLEN];        is >> temp;        if (is)            s = temp;        delete[] temp;        return is;    } 

读书人网 >C++

热点推荐