我正在为游戏创建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)
AFAIR默认情况下,>>运算符会跳过换行符.如果您还想阅读空格,那么您应该noskipws在阅读字符之前添加.
Pic_File >> std::noskipws;
Run Code Online (Sandbox Code Playgroud)