读文件到string的vector(?)

// 按单词读有误,读出来的和按行读效果一致。  1 #include <iostream>
  2 #include <fstream>
  3 #include <string>
  4 #include <vector>
  5
  6 using namespace std;
  7
  8 int fileToLineVector(const string fileName, vector<string> &svec)
  9 {
 10     // 创建ifstream对象inFile并绑定到由形参fileName指定的文件
 11     ifstream inFile(fileName.c_str());
 12     if (!inFile)  // 打开文件失败
 13     {
 14         return 1;
 15     }
 16
 17     // 将文件内容读入到string类型的vector容器
 18     // 每一行存储为该容器对象的一个元素
 19     string s;
 20     while (getline(inFile, s))
 21     {
 22         svec.push_back(s);
 23     }
 24     inFile.close();        // 关闭文件
 25
 26     if (inFile.eof())    // 遇到文件结束符
 27     {
 28         return 4;
 29     }
 30
 31     if (inFile.bad())    // 发生系统级故障
 32     {
 33         return 2;
 34     }
 35
 36     if (inFile.fail())    // 读入数据失败
 37     {
 38         return 3;
 39     }
 40
 41     return 0;
 42 }
 43
 44 int fileToWordVector(const string fileName, vector<string>& svec)
 45 {
 46     // 创建ifstream对象inFile并绑定到由形参fileName指定的文件
 47     ifstream inFile(fileName.c_str());
 48     if (!inFile)    // 打开文件失败
 49     {
 50         return 1;
 51     }
 52
 53     // 将文件内容读入到string类型的vector容器
 54     // 每个单词存储为该容器对象的一个对象
 55     string s;
 56     while (inFile >> s)    // 读入单词
 57     {
 58         svec.push_back(s);
 59     }
 60     inFile.close();        // 关闭文件
 61
 62     if (inFile.eof())    // 遇到文件结束符
 63     {
 64         return 4;
 65     }
 66     if (inFile.bad())    // 发生系统级故障
 67     {
 68         return 2;
 69     }
 70     if (inFile.fail())    // 读入数据失败
 71     {
 72         return 3;
 73     }
 74
 75     return 0;
 76 }
 77
 78 void showVector(vector<string> svec)
 79 {
 80     for (vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter)
 81     {
 82         cout << *iter << endl;
 83     }
 84 }
 85
 86 void test()
 87 {
 88     string strFileName = "file.txt";
 89     // 文件按行读
 90     cout << "文件按行读" << endl;
 91     vector<string> lineVec;
 92     fileToLineVector(strFileName, lineVec);
 93     showVector(lineVec);
 94
 95     // 文件按单词读
 96     cout << "文件按单词读" << endl;
 97     vector<string> wordVec;
 98     fileToLineVector(strFileName, wordVec);
 99     showVector(wordVec);
100
101 }
102
103 int main()
104 {
105     test();
106     return 0;
107 }
时间: 2024-10-28 14:31:42

读文件到string的vector(?)的相关文章

编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中

#include<iostream> #include<string> #include<vector> #include<fstream> using namespace std; int main(int argc,char *argv[]) { ifstream input(argv[1]); vector<string> vec; string tmp; while(getline(input,tmp)) { vec.push_back(

谈谈两种标准库类型---string和vector

两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库类型string   1.定义和初始化string对象:初始化string对象的方式有 string s1   默认初始化,s1是一个空串   string s2(s1)   s2是s1的副本 string s2=s1   等价于s2(s1),s2是s1的副本 string s3("value&qu

java创建文本、文件、读文件、写文件

1 package Head18; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileNotFoundException; 6 import java.io.FileReader; 7 import java.io.FileWriter; 8 import java.io.IOException; 9 10 public class Mkdirs_FileRW { 11 public st

GoLang几种读文件方式的比较

GoLang提供了很多读文件的方式,一般来说常用的有三种.使用Read加上buffer,使用bufio库和ioutil 库. 那他们的效率如何呢?用一个简单的程序来评测一下: package main import(    "fmt"     "os"     "flag"     "io"     "io/ioutil"     "bufio"     "time"

C++读一行到string中与vc的debug assertion failed!问题

将输入的一行读到string中不需要像用数组那样,考虑给多少大小的空间,这可以使得做acm题更加方便. c++98有两个函数可以读一行到string中,如下: istream& getline (istream& is, string& str, char delim); istream& getline (istream& is, string& str); 例子: #include <iostream> #include <string

字符流;字节流;带缓冲的输入输出流;以及用scanner读文件

概念: InputStream类是字节输入流的抽象类,是所有字节输入流的父类. OutputStream类是字节输入流的抽象类,是所有字节输出流的父类. In(可以理解为读)Out(可以理解为写) 一.字节流的读与写 FileInputStream类与FileOutStream类都是用来操作磁盘文件的. 1. FileInputStream(String name); 填String类型的路径名 FileInputStream(File file); 填入File对象 2. FileOutStr

java 读文件 解析

[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {    /**     * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件.     */    public static void readFileByBytes(String fileName) {        File file = new File(fileName);        Input

Java8读文件仅需一行代码

JDK7中引入了新的文件操作类java.nio.file.File,它包含了很多有用的方法来操作文件,比如检查文件是否为隐藏文件,或者是检查文件是否为只读文件.开发者还可以使用Files.readAllBytes(Path)方法把整个文件读入内存,此方法返回一个字节数组,还可以把结果传递给String的构造器,以便创建字符串输出. 此方法确保了当读入文件的所有字节内容时,文件属性是关闭的,否则就会出现IO异常或其它的未检查异常.这意味着在读文件到最后的块内容后,无需关闭文件.要注意,此方法不适合

(IO流)java中多种方式读文件,追加文件内容,对文件的各种操作

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.RandomAccessFile; import java.io.R