gpt4 book ai didi

c++ - MFC Visual Studio 中的代码错误 CString?

转载 作者:行者123 更新时间:2023-11-28 06:10:48 30 4
gpt4 key购买 nike

如果我添加 arr(1)=HelloWorld,就可以了!

但是如果我添加 arr(1)=Hello,world 或 Hello_World 或 Hello World

它不会!

我的代码片段如下:

void CMFCApplicationFileDlg::OnClickBtnToData()
{

CString dataIn;
m_txtDataInput.GetWindowTextW(dataIn);
int dem = 0;
int check = 0;
CString mangMaHoa[] = { _T("A"), _T("B"), _T("C"), _T("D"), _T("E"), _T("F"), _T("G"), _T("H"), _T("I"), _T("J"), _T("K"), _T("L"), _T("M"), _T("O"), _T("P"), _T("Q"), _T("R"), _T("S"), _T("T"), _T("U"), _T("V"), _T("W"), _T("X"), _T("Y"), _T("Z") };
int num = arr[1].GetLength();
CString mahoa, chuoiSauMaHoa;

for (int i = 0; i < arr[1].GetLength(); i++)
{
mahoa = arr[1].Mid(i, 1);
dem = 0;
check = 0;

for (int j = 0; j < 26; j++)
{
if (mangMaHoa[j].CompareNoCase(mahoa) == 0)
{
check += 1;
if (j >= 23)
{
dem = j + 3;
dem = dem - 26;
}
else
{
dem = j + 3;

}
chuoiSauMaHoa += mangMaHoa[dem];
break;
}
else
{

continue;
}
}
if (check == 0)
{
chuoiSauMaHoa += mahoa;
}
}
m_txtDataOutput.SetWindowTextW(chuoiSauMaHoa);

}

if (check == 0)
{
chuoiSauMaHoa += mahoa;
}

我想得到所有字符

截图:

Screenshot:

提前致谢!

最佳答案

您非常依赖魔数(Magic Number) 26,您认为它是数组 mangMaHoa 的长度。

但实际上它的长度是 25(您是否打算省略字母 N?)

所以越界错误将会发生,尤其是在搜索您的特殊字符 _space 时。

与其假设你认为的数组大小,不如采取防御措施并确定数组的实际大小

size_t alphabet = sizeof(mangMaHoa) / sizeof(mangMaHoa[0]);

并使用结果代替。

关于c++ - MFC Visual Studio 中的代码错误 CString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31308619/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com