C ++:一次读取一个字符,直到一行不能正常工作

时间:2016-03-11 07:14:05

标签: c++ char

我应该一次读取一个字符的文本文件,每当有一个新行时,line应该增加一个。

所以这是代码的相关部分:

ifstream textFile.open("PATHWAY::HERE//RRER.txt");
int line = 1;
char letter;
while (textFile)
{
  //Read in letter
  textFile >> letter;

  // If you reach the end of the line
  if (letter == '\n')
  {
    line++;
    cout << line;
  }
}

if语句由于某种原因被完全忽略,并且不会打印出行。

4 个答案:

答案 0 :(得分:2)

虽然答案(到现在为止)已经提到了关于&#34; \ n&#34;正确地说,提到的方法可能不起作用。原因是>>是格式化的输入运算符,它将跳过空格。您必须使用std::ifstream::get

阅读该文件

代码看起来像:

while (textfile.get(letter))
{
            // If you reach the end of the line
    if (letter == '\n')
    {
        line++;
        cout << line;
    }
}

答案 1 :(得分:1)

您的代码中存在一些错误:

  • 它&#39; \ n&#39;不是&#39; / n&#39;
  • line = 0 not 1
  • 您需要使用std::ifstream::get来阅读文件

  • 删除textFile>> letter;,因为它会跳过whitespaces

所以你的代码将如下所示

ifstream textFile.open("PATHWAY::HERE//RRER.txt");
        int line = 0; // not 1
        char letter;
        while(textFile.get(letter))
            {
             // If you reach the end of the line
                if (letter == '\n')
                {
                    line++;
                    cout << line;
                }
            }

答案 2 :(得分:0)

您可以使用\n字符

查找是否为新行

所以你的代码应该是

ifstream textFile.open("PATHWAY::HERE//RRER.txt");
  int line = 1;
   char letter;
  while (textFile)
    {
    // Read in letter
    textFile>> letter;

    // If you reach the end of the line
    if (letter == '\n')
    {
        line++;
        cout << line;
    }
}

答案 3 :(得分:0)

使用istream::get

ifstream textFile.open("PATHWAY::HERE//RRER.txt");
int line = 0;
char letter;
while(textFile.get(letter))
{
  // If you reach the end of the line
  if (letter == '/n')
  {
    line++;
    cout << line;
  }
}