我无法识别if语句中的endl字符\n

Dlj*_*ali 0 c++ string char

我正在为游戏创建ASCII艺术,而我fstream没有在我的if语句中接收'\n'(using char)从流中删除.看起来很简单,但我现在很困惑.任何线索?

void pic_maker(ifstream &Pic_file, string P_Name, int x, int y, int t)
{
Pic_file.open(P_Name);
int margin = 0;
coordinate(x, y);
char pic_info;
Pic_File >> pic_info;

while (!Pic_File.eof())
{
    while (pic_info == '?')
    {
        Pic_File >> pic_info; //ADDS SPACES TO IMAGE BY REPLACING ?
        cout << " ";
    }
    if (pic_info == '0') //RETURNS TO NEW LINE
    {
        Pic_File >> pic_info;
        y++;
        coordinate(x, y);
    }
    if (pic_info == '\n') //MY PROBLEM! DOESN'T RECOGNIZE \n
    {
        Pic_File >> pic_info;
    }
    cout << pic_info;
    Pic_file >> pic_info;
}

Sleep(t);
}
Run Code Online (Sandbox Code Playgroud)

Abh*_*sal 6

AFAIR默认情况下,>>运算符会跳过换行符.如果您还想阅读空格,那么您应该noskipws在阅读字符之前添加.

Pic_File >> std::noskipws;
Run Code Online (Sandbox Code Playgroud)