通过char而不是逐字逐句读取文本文件char?

时间:2013-11-30 18:48:59

标签: c++ text

我尝试创建一个从文本文件中读取的代码,名为aisha

This is a new file I did it for as a trial for university
but it worked =)
Its about Removing stopwords from the file
and apply casefolding to it
It tried doing that many times
and finally now I could do now

然后代码将读取的文本存储在数组上,然后从中删除停用词 但是现在我需要进行折叠步骤 此代码逐字读取文本文件的问题

我想通过char读取char,所以我可以将casefolding应用于每个char 有没有办法使代码通过char读取aisha文件char?

#include <iostream>
#include <string>
#include <fstream>

int main()
{
    using namespace std;

    ifstream file("aisha.txt");
    if(file.is_open())
    {
        string myArray[200];

        for(int i = 0; i < 200; ++i)
        {
            file >> myArray[i];

            if (myArray[i] !="is" && myArray[i]!="the" && myArray[i]!="that"&& myArray[i]!="it"&& myArray[i]!="to"){
            cout<< myArray[i]<<"  ";
            }


        }
    }
system("PAUSE");
return 0;
}

3 个答案:

答案 0 :(得分:2)

如果将数组声明为char数组而不是字符串数组,则提取运算符应自动读取char。

此外,您必须小心,因为&gt;&gt;默认情况下,运算符会跳过空格字符。如果你想读取空格,那么你应该在阅读字符之前添加noskipws。

file >> std::noskipws;

答案 1 :(得分:1)

在此链接中解释了C ++执行此操作的方法:http://www.cplusplus.com/reference/istream/istream/get/

#include <iostream>     // std::cin, std::cout
#include <vector>       // store the characters in the dynamic vector
#include <fstream>      // std::ifstream

int main () {

  std::ifstream is("aisha.txt");     // open file and create stream
  std::vector <char> stuff;

  while (is.good())          // loop while extraction from file is possible
  {
    char c = is.get();       // get character from file
    if (is.good())
      std::cout << c;        // print the character
      stuff.push_back(c);    // store the character in the vector
  }

  is.close();                // close file

  return 0;
}

现在,您基本上将文件的每个字符都存储在称为stuff的向量中。您现在可以对此向量进行修改,因为它更容易内部表示数据。此外,您还可以访问所有方便的STL方法。

答案 2 :(得分:0)

使用整个字符串而不是按char读取char 使用readline函数。