这个白窗口是什么意思啊

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果

img

img

img


在devc++中可以正常运行,vs里就变成这样了

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string arr1, arr2;
    int a = 0, b = 0;
    getline(cin, arr1);
    getline(cin, arr2);
    for (int i = 0; i < arr1.size(); i++)
    {
        if (arr1[i] >= 90 && arr1[i] <= 122)
            arr1[i] -= 32;
    }
    for (int i = 0; i < arr2.size(); i++)
    {
        if (arr2[i] >= 90 && arr2[i] <= 122)
            arr2[i] -= 32;
    }
    while (a<=arr1.size()&&b<=arr2.size())
    {
        while (arr1[a] != ' ' && arr2[b] != ' ')
        {
            if (arr1[a] == arr2[b])
            {
                a++;
                b++;
            }
            else
            {
                cout << "NO" << endl;
                return 0;
            }
        }
        if (arr1[a] = ' ')
            a++;
        if (arr2[b] = ' ')
            b++;
    }
    cout << "YES" << endl;
    return 0;
}

修改1:

img

看报错是字符串下标问题

白窗口表示你的程序崩溃了,有异常

while (arr1[a] != ' ' && arr2[b] != ' ')

改成

if (arr1[a] != ' ' && arr2[b] != ' ')

因为是while的话
arr1[a]和 arr2[b]就会越界,因为a++和b++在第二个while里面,一直没跳出循环去判断a是不是比arr1.size()小。
当a=2的时候就崩溃了。
因为arr1[0]=A, arr2[0]=A
arr1[1]和arr2[1]是\0的结束.
所以arr1[2]的时候就越界了

谢邀请
白窗口就是程序崩溃了,解决办法见楼上的

while (a<=arr1.size()&&b<=arr2.size())
改为
while (a<arr1.size()&&b<arr2.size())
试试看
“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?