C和C++分别读取文本文件的方式
2010-11-10 22:03
274 查看
在我们的工作学习中,经常涉及到读取文本文件的操作,其实这些简单的常用操作我们应当熟记于心。
本文分别列举了C和C++下按照每行的格式读取文本文件,其中C++的实现中将单词以空格为分隔符输出,可以看到C++对字符串的处理确实要强大一些。
c实现:
c++实现:
补充getline函数知识:
对于下面这个程序
1、两个函数虽然看上去名称相同都是getline,但它们有所不同。
cin.getline(charr,20);的getline是输入流对象的成员函数,即istream::getline,使用时需头文件 #include <iostream>;getline(cin,str);的getline是std名字空间下的库函数,即std::getline,使用时需头文件 #include <string>。
2、string类的getline(cin,str);中第一个参数要求是一个输入流对象的引用,即istream&,第二个参数则是一个string类的对象。这里cin就是C++内部定义的一个全局的输入流对象,即extern istream cin,str是定义的string类对象。
C++:
istream::getline(char* szLine, size_t sizeof(szLine));
istream::getline(char* szLine, size_t count, char delim);
STL:
getline(cin, string& sLine);
getline(cin, string& sLine, char delim);
C:
getline(char* szLine, size_t sizeof(szLine), FILE* fp);
本文分别列举了C和C++下按照每行的格式读取文本文件,其中C++的实现中将单词以空格为分隔符输出,可以看到C++对字符串的处理确实要强大一些。
c实现:
#include <stdio.h> #include <string.h> #include <unistd.h> #define MAX_LINE 500 int main(int argc, char** argv) { //read from file FILE* fp; if ((fp=fopen("data.txt","r")) == NULL) { printf("open file error/n"); _exit(-127); } char line[MAX_LINE]; while (fgets(line,sizeof(line),fp) != NULL) { printf("%s/n",line); memset(line,0,sizeof(line)); } fclose(fp); return 0; }
c++实现:
#include <unistd.h> #include <iostream> #include <fstream> #include <sstream> #define MAX_LINE 500 using namespace std; int main(int argc, char** argv) { //read from file ifstream fin("data.txt"); if (fin.fail()) { cerr << "open file error" << endl; _exit(-127); } string line,word; while (std::getline(fin,line)) { stringstream stream(line); while (stream >> word) cout << "word:" << word << endl; } fin.close(); return 0; }
补充getline函数知识:
对于下面这个程序
#include <iostream> #include <cstring> #include <string> using namespace std; int main() { string str; char charr[20]; cin.getline(charr,20); getline(cin,str); cout<<charr<<endl; cout<<str<<endl; return 0; }
1、两个函数虽然看上去名称相同都是getline,但它们有所不同。
cin.getline(charr,20);的getline是输入流对象的成员函数,即istream::getline,使用时需头文件 #include <iostream>;getline(cin,str);的getline是std名字空间下的库函数,即std::getline,使用时需头文件 #include <string>。
2、string类的getline(cin,str);中第一个参数要求是一个输入流对象的引用,即istream&,第二个参数则是一个string类的对象。这里cin就是C++内部定义的一个全局的输入流对象,即extern istream cin,str是定义的string类对象。
C++:
istream::getline(char* szLine, size_t sizeof(szLine));
istream::getline(char* szLine, size_t count, char delim);
STL:
getline(cin, string& sLine);
getline(cin, string& sLine, char delim);
C:
getline(char* szLine, size_t sizeof(szLine), FILE* fp);
相关文章推荐
- [C++]普通文本文件最佳读取方式
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- C/C++分别读取文件,以空格为分隔符
- 文本文件的读取方式一
- Java基础-文件的续写、文本文件读取方式及其练习
- c++输入文件处理按行读取并且将实现对一行数据分别处理
- 【转载】C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- JAVA基础知识IO流(文本文件读取方式一)
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- IO流(文本文件读取方式一)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 《C++第十二周实验报告2-1》--分别定义Teacher(教师)类和Cadre(干部采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)
- 以C++方式读取文件内容,且另存为其他文件中
- C语言模拟C++方式读取串口操作实现
- 算法导论2.3-5答案 分别采用递归与非递归方式实现二分查找 c++实现
- IO流(文本文件读取方式二)
- 文本文件的读取方式二
- 探寻C++读取文件最快的方式
- C++构造函数,析构函数,不在main中写任何东西依然有输出的方式,证明this指针的存在,mutable关键字,cin的读取方式,友元函数