我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 字符读取的问题 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

维尼熊





性别: 美女 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 781
威望: 0
浮云: 1111
在线等级:
注册时间: 2007-09-06
最后登陆: 2011-06-24

5come5帮你背单词 [ halt /ho:lt/ n. & v. 停住,停止 ]


字符读取的问题

  在C或C++中,如何读取一串不确定长度的字符串呢?因为使用BUF定义的时候好像就确定了长度,如果输入字符数小于长度时,我怎么才能知道字符串的长度呢
顶端 Posted: 2008-05-26 08:06 | [楼 主]
闪电一刹那





性别: 美女 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 76
威望: 0
浮云: 1169
在线等级:
注册时间: 2007-09-17
最后登陆: 2009-04-06

5come5帮你背单词 [ south /sauθ/ n. & a. 南方(的);ad. 向(自/在)南方 ]


Quote:
引用第0楼维尼熊于2008-05-26 08:06发表的 字符读取的问题 :
  在C或C++中,如何读取一串不确定长度的字符串呢?因为使用BUF定义的时候好像就确定了长度,如果输入字符数小于长度时,我怎么才能知道字符串的长度呢

用指针应该可以。
顶端 Posted: 2008-05-26 09:00 | [1 楼]
电子青蛙



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 单身贵族
发贴: 2924
威望: 0
浮云: 1197
在线等级:
注册时间: 2005-09-22
最后登陆: 2008-06-28

5come5帮你背单词 [ empty /'empti/ a. 空的,空虚的,空洞的;vt. 弄空,倒空 ]


你在读入的时候可以new需要的空间,如果空间满了就double原始空间的大小
可以模仿STL中vector类似的方法
比如你可以事先申请一个固定大小的空间
在发现不够的时候重新分配一个两倍大小的空间,然后拷贝原来的数据到新的空间
然后再删除原来的空间,最后将指针指向新的空间,如果存储的是对象的话不能用memcpy
应该调用拷贝构造函数一个一个元素的拷贝,因为对象还含有额外数据,需要做深拷贝
int nBufCapacity = 32;
int nBufSize = 0;
byte * pBuf = new byte[nBufCapacity];
while(true)
{
    pBuf[nBufSize++] = getch();
    if(nBufSize >= nBufCapacity)
    {
        nBufCapacity  = nBufCapacity << 2;
        byte* pTemBuf = new byte[nBufCapacity];
        memcpy(pTemBuf, pBuf, nBufSize);
        delete[] pBuf;
        pBuf = pTemBuf;
    }
    if (exit condition)
    {
        break;
    }
}
顶端 Posted: 2008-05-26 21:57 | [2 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.031457(s) query 5, Time now is:12-04 16:21, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号