我有一个填充了以下内容的队列:
'c', 'c', 'c', 's', 'c', 'c', 'c', 'c', 's', 'c', 'c', 'n', 'c', 'c', 'c', 'e'
我正在尝试将.txt文件写入以下内容:
我的算法如下:
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。
答案 0 :(得分:3)
当你在内循环中检查'c'时,你会从队列中弹出'c',直到你到达's',随后它会完成循环和第一个if块,并进入input.pop()at外部while循环的结束,它会将你移动到下一个字符,因此永远不会根据你的if语句检查's'。