c/c++ 读入一行不确定个数的整数
来源:互联网 发布:淘宝店铺悬浮导航图片 编辑:程序博客网 时间:2024/06/06 01:20
c/c++ 读入一行不确定个数的整数
原文地址:www.cnblogs.com/TenosDoIt/p/3724234.html
假设有一个文件,文件的每一行包括n个整数,整数之间以一个空格隔开,文件总共有m行,但是事先不知道n,m。如何每次从文件中读取一行整数放到一个数组中。
可以分为两步:1、首先从文件中读入一行字符串,2、然后从这一行字符串中解析出整数。
对于第一步,我们可以有c、c++两种风格的做法
C:FILE *fp = fopen("input.txt", "r"); char buf[10000]; while(fgets(buf, 10000, fp)) { //从buf解析出整数 }C++:ifstream infile("input.txt");string s; while(getline(infile, s)) { //从s中解析出整数 }
经过测试如果不考虑解析整数的时间,这两种方法耗时相差不大,说明getline和fgets效率基本相同。
对于第二步,从一行字符串中解析出整数,以下提供3中方法, 为了简单,我们只是返回从字符串中解析出的整数个数,并没有把他们存入数组
//方法1:利用字符串流istringstreamint getInt(string &s){ istringstream iss(s); int num, res = 0; while(iss >> num) res++; return res;}//方法2:利用strstr函数和atoi函数int getInt(const char *buf){ const char *loc = buf; int res = 0; atoi(buf); loc = strstr(buf," "); while(loc != NULL) { atoi(loc+1); res++; loc = strstr(loc+1, " "); } return res;}//方法3:利用strtok函数(该函数用法可参考关于函数strtok和strtok_r的使用要点和实现原理(一))和atoi函数int getInt(char *buf){ char *p = strtok(buf, " "); int res = 0; while(p) { atoi(p); res++; p = strtok(NULL, " "); } return res;}
这三种方法的耗时,方法2和方法2基本相同(方法3的时间略多),方法1差不多是方法2的10倍
0 0
- c/c++ 读入一行不确定个数的整数
- c/c++ 读入一行不确定个数的整数
- 【C++】读入一行
- C 不确定参数个数的函数的实现
- C/C++ 读入一行字符串
- C语言中实现参数个数不确定的函数
- C语言中实现参数个数不确定的函数
- C语言中实现参数个数不确定的函数
- c编程:整数的个数。
- C程序读入一组文本行,打印最长的一行。
- 【C++】【格式】c++ 如何读入一行字符串
- 输入不确定个数的整数,按从小到大顺序输出
- [C++]实验四:掌握内联函数的使用、参数个数不确定的函数的设计...
- C语言中【不确定输入个数数值的最大值、最小值、平均值】
- C++ 输入一行未知个数的整数
- C语言-统计一行句子中单词的个数
- 读入一行字符(包括空格)做为一个字符串的两个方法 ,C/C++
- C语言不确定参数
- 睡眠枪
- 欢迎使用CSDN-markdown编辑器
- CXF 和Spring 整合,客户端代码如何调用举例说明
- java 比较两对象的方法
- 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析
- c/c++ 读入一行不确定个数的整数
- 关于volatile修饰符的一知半解
- zTree使用心得
- Mysql 状态字段转中文描述 case then
- 详解intel处理器命名规则
- 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
- eclipse优化
- 【Basic computer】------ Calculator
- 安卓TTS文字转语音