getline函数
- getline有四种重载形式:
1. istream& getline (istream& is, string&str, char delime)
2. istream& getline (istream&& is, string&str, char delime)
3. istream& getline (istream& is, string&str)
4. istream& getline (istream&& is, string&str)
- 参数解释:
is:用于文本读取的istream对象。
str:存储从istream中读取的文本的对象。str原有的内容将被丢弃,并替换为读取的文本内容。
delime:限定符,读取到相应的字符将会停止读取。
参考链接
ofstram 和 ifstream
- ofstream是从内存到硬盘,ifstream是从外部读到内存,C++中所有的I/O都以流类为基础。
- 对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream。
- void open(const char filename,int mode,int access);*
参数:
filename: 要打开的文件名
mode: 要打开文件的方式
access: 打开文件的属性
另外,fstream还有和open()一样的构造函数,如:fstream file1(“c:\config.sys”);
关闭文件: file1.close(); - 二进制文件的读写:
put()函数向流写入一个字符,其原型是ofstream &put(char ch)
get()函数比较灵活,有3种常用的重载形式:
ifstream &get(char &ch)
ifstream &get(char *buf,int num,char delim='\n')
- 读写数据块:
read(unsigned char *buf,int num);
write(const unsigned char *buf,int num);
- 文件定位:
file1.seekg(1234,ios::cur); //把文件的读指针从当前位置向后移1234个字节
file2.seekp(1234,ios::beg); //把文件的写指针从文件开头向后移1234个字节
istream &seekg(streamoff offset,seek_dir origin);
ostream &seekp(streamoff offset,seek_dir origin);
stringstream类
字符串简单的拼接,尽量使用+或者append。数字转字符串,尽量使用to_string或者snprintf,不要使用lexical_cast。而较为复杂的string format可以使用snprintf,或者fmt::format,不要使用stringstream。
参考链接
简单操作