内存缓冲区与流的连接问题

hjjdebug 2009-04-26 05:42:11
问题描述如下:
有这样一个文件,命名为1.txt

货物编号: 12 23 45 456 765 234...
货物重量: 3.5 24 38 25.0 34 56 ...

其中货物编号是整形数, 一行有多个数据,数据间用空格或tab分割。
与之对应的货物重量为单精度实数, 与编号配对。
现在,要把数据读入内存。
按照c 的做法,把文件打开,按行读入到字符缓冲区buffer, 然后依据空格和tab分割缓冲
用sscan 扫描数据,然后再存储到数组中。

c++我想有更好的办法。读入缓冲区我想是必要的吧,假如每一行不超过512字符。
然后是扫描数据,c++ 能否用一个类似 istream 方式完成数据输入, 类似于 cin >> number 格式。
然后我们把扫来的number 放入vector.

不懂得是,怎样从缓冲区buffer实现类似cin >> number 这样输入。 还有已经到达尾部的判别。

追求完美,永无止境,谢谢您的指点! 有代码更好。
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjjdebug 2009-04-26
  • 打赏
  • 举报
回复
老将出马,一个顶俩!
从老兄那又学了两手。
一个getline, line by line。 buffer 已经过时了。
一个 istringstream。 就是我要的,把流和字符串相连接的类。
非常感谢!
  • 打赏
  • 举报
回复
这里is是fstream,打开文件即可
  • 打赏
  • 举报
回复
getline读取数据到一个 string.
然后用一个stringstream接收。
然后在输出到另一个string.


string textline;
vector< string > lines_of_text;
while (getline(is, textline))
lines_of_text.push_back(textline);
}

for(int line_no line_num = 0; line_num != lines_of_text.size(); ++line_num)
{
istringstream line(lines_of_text[line_num]);
string word;
while (line >>word)
//这里就看你想干嘛了
}


liliangbao 2009-04-26
  • 打赏
  • 举报
回复
up先!!!

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧