ifstream如何知道分隔符在哪里

时间:2013-05-21 02:05:08

标签: c++ visual-c++

所以当我读取文件(“animal.txt”)时,它给了我

zebra
baboon
orangutan
gorilla
aardvark
lion
tiger
cougar
ocelot
panther
rat
mouse
gerbil
hamster
elephant
rhinoceros
hippopotamus

我想知道ist >> s如何识别分隔符并将长字符串分成单个单词。我在下面提供了一个txt和我的实现。

animal.txt


zebrababoonorangutangorillaaardvarkliontigercougarocelotpantherratmousegerbilhamsterelephantrhinoceroshippopotamus

SortedList readFile(string infile)
{
      SortedList result;
      string s;

      ifstream ist(infile.c_str()); // open file
      // Check if file opened correctly
      if(ist.fail()) throw runtime_error("file not found");

      // Read file into list
      while(ist >> s){
          cout<< s << endl;
          cout << ist << endl;
            result.insert(s);
      }

      return result;
}

1 个答案:

答案 0 :(得分:1)

operator>>应用于左侧的流和右侧的字符串。

将从流中读出一个“空格”分隔的单词到字符串中。

确切地说它会:

  1. 读取并忽略字符,直到issapce()为假。
  2. 读取并存储字符串字符,直到isspace()为真。