本帖最后由 隐藏英雄 于 2022-12-26 21:48 编辑
下面这第一段代码是正常运行的代码[C++] 纯文本查看 复制代码 while (getline(MyFile, TextIp))
{
if (TextIp.find(str) != string::npos)
size_t flag = 0;
//string IpName[60] = { 0 };
//char ip1[120] = { 0 };
const char* p = TextIp.data();
for (size_t i = strlen(p) - 1; i > 0; i--)
{
if (p[i] == * strStop)
{
flag = i + 2;
break; //退出循环
}
}
for (size_t i = flag, j = 0; i <= strlen(p) - 1; i++, j++)
{
StrName[j] = p[i];
}
MyFile.close();
}
}
MyFile.close();
下面这段是我需要做改变的代码
[C++] 纯文本查看 复制代码 while (getline(MyFile, TextIp))
{
if (TextIp.find(str) != string::npos)
{
size_t flag = 0;
//string IpName[60] = { 0 };
//char ip1[120] = { 0 };
const char* p = TextIp.data();
for (size_t i = strlen(p) - 1; i > 0; i--)
{
if (p[i] == * strStop)
{
flag = i + 2;
break;
}
}
if (str == "默认网关")
{
for (size_t i = flag, j = 0; i <= strlen(p) - 1; i++, j++)
{
StrName[j] = p[i];
}
if (str == "平均")
{
for (size_t i = flag, j = 0; i <= strlen(p) - 3; i++, j++)
{
StrName[j] = p[i];
}
}
MyFile.close();
}
}
MyFile.close();
我想实现 通过str这个变量在此时的数据不同,进行不同的计算,但是它走到判断if (str == "默认网关") 时,此时str也确实是 默认网关。正常思路应该是开始if里面的for循环。但是它却直接过了,不会进行for循环 |