写入文件时保留空格

时间:2017-01-23 00:23:06

标签: c++ text io

我有一个填充了以下内容的队列:

'c', 'c', 'c', 's', 'c', 'c', 'c', 'c', 's', 'c', 'c', 'n', 'c', 'c', 'c', 'e'

我正在尝试将.txt文件写入以下内容:

  • 如果队列前面是'c',找到连续'c'的数量,将该数字写入文件
  • 如果队列前面是's',则写一个空格到文件
  • 如果队列前面是'n',则将换行符写入文件
  • 如果队列前面是'e',请停止

我的算法如下:

void writeToFile(queue<char> &input) {
    int numC;
    ofstream myFile;
    myFile.open("file.txt");
    while (input.front() != 'e') {
        if (input.front() == 'c') {
            numC = 0;
            while (input.front() == 'c') {
                numC++;
                input.pop();
            }
            myFile << numC;
        } else if (input.front() == 's') {
            myFile << " ";
        } else if (input.front() == 'n') {
            myFile << "\n";
        }
        input.pop();
    }
    myFile.close();
}

file.txt应包含以下内容:

3 4 2
3

但它包含以下内容:

342
3

为什么空格没有放入文件?如果重要的话,我正在使用Linux。

1 个答案:

答案 0 :(得分:3)

当你在内循环中检查'c'时,你会从队列中弹出'c',直到你到达's',随后它会完成循环和第一个if块,并进入input.pop()at外部while循环的结束,它会将你移动到下一个字符,因此永远不会根据你的if语句检查's'。