引言:今天工作遇到了一个需要按行读取txt文件数据的需求,查询了一下getline()函数,发现这竟然是一个C++的标准库函数,而且设计的很好,特地做一下记录.getline本质是一个定界流输入截取函数,默认是换行符'/n' 个人技术博客(文章整理+源码): https://zobolblog.github.io/LearnWinAPI/ 最终效果: 1.getline函数声明 getline函数实际上是在两个模块都有实现,一个是string一个是istream,它们的用处都是一样的,只是输入的…
  引言:今天学会了getline的用法,顺手编写一个逐行读取txt文件的程序.关于getline的用法可以看我之前的博客:2.C++标准库函数:getline函数 定界流输入截取函数 -zobol的windows编程教程 个人技术博客(文章整理+源码): https://zobolblog.github.io/LearnWinAPI/ 最终效果: : 1.getline函数声明 getline函数实际上是在两个模块都有实现,一个是string一个是istream,它们的用处都是一样的,只是输入…
1.substr函数格式   (俗称:字符截取函数) 格式1: substr(string string, int a, int b); 格式2:substr(string string, int a) ; 解释: 格式1:        1.string 需要截取的字符串         2.a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)        3.b 要截取的字符串的长度 格式2:        1.string 需要截取的字符串        2.a 可以理…
C标准库文件读写函数总结:都是对文件流进行输入输出的函数分为对文件的有格式读写以及无格式读写 一.文件的无格式读写根据每次读写字符的数量,分为三类:1.按字符读写文件 按字符读有三个函数:以下三个函数,当文件结束或发生错误时,都返回EOF,EOF数值一般定义为(int)-1(1)int getc(FILE* stream);    以unsigned char类型读取文件输入流stream中的一个字符,并将其转换为整型后返回,同时移动文件指针到下一个字符处.(2)int getchar(void…
<signal.h> 中有一个复杂的函数声明.很叫人费解. void (*signal(int sig, void (*handler)(int)))(int); 我们按照向右看向左看的黄金法则来分析这个函数声明.如果你不明白我在讲什么,请看 读懂C复杂声明的黄金法则. 首先这个声明的主体是signal,这个应该没有争议. 向右看,(int sig, void (*handler)(int)),括号和参数,说明signal是一个函数. 第一个整形参数sig不用多讲,第二个参数比较复杂 void…
标准库函数atoi用于将字符串类型的数据转换为整形数据:在转换过程中要考虑空指针.空字符串"".正负号,溢出等情况 这里是将字符串str转换为32位整型,其正数的最值为0x7FFFFFFF,负数的最小值为0x80000000(可参考有符号类型的最小负数的补码的由来),通过这两个值来判断是上溢还是下溢,此外,用一个全局变量来表明是否是非法输入的问题. 代码如下:(vs2010调试正确) //实现atoi_32函数 //正数数的最大值为0x7FFFFFFF,最小值为0x80000000,考…
C语言提供了几个标准库函数C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <stdio.h> # include <stdlib.h> void main (void) { ; ]; itoa(num, str, ); printf("The number 'num' is %d and the string 'str' is %s. \n" ,…
http://zh.cppreference.com/w/c 前言 ANSI C(C89)标准库函数共有15个头文件.这15个头文件分别为: 1.<assert.h>           2.<ctype.h>         3.<errno.h> 4.<float.h>            5.<limits.h>         6.<locale.h> 7.<math.h>            8.<se…
范围for语句: 引入的意义:简化传统for的编写,主要用于遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是: for( 声明: 给定序列) { 执行的操作. } 其中,“给定序列”部分是一个对象,如一个string的对象.“声明”部分用于定义一个变量,该变量将被用于访问序列中的基础元素.每次迭代,“声明”部分的变量会被初始化为“给定序列”部分的下一个元素值. 一个范围for循环的简单例子: string str(“some string”); 2 for(auto c:st…
fwrte是C标准库中提供的函数,是对write函数的扩展与封装,write则是Unix系统提供的函数.按照常理来讲,系统调用肯定比使用库快的多,但是事实正好相反 Why?原因就在于缓冲的问题,fwite会在内存中开辟缓冲区,来避免频繁的I/O,所以速度比系统调用要快(更多比较"open/read/write和fopen/fread/fwrite的区别") 为了直观的比较一下fwrite和write的速度.我们来做一个简单的测试: fwrite.c [c] #include <s…