隐藏英雄 发表于 2022-12-26 20:21

C++ 求助4

本帖最后由 隐藏英雄 于 2022-12-26 21:48 编辑

下面这第一段代码是正常运行的代码      while (getline(MyFile, TextIp))
      {
                if (TextIp.find(str) != string::npos)
                        size_t flag = 0;
                        //string IpName = { 0 };
                        //char ip1 = { 0 };
                        const char* p = TextIp.data();
                        for (size_t i = strlen(p) - 1; i > 0; i--)
                        {
                              if (p == * strStop)
                              {
                                        flag = i + 2;
                                        break;                              //退出循环
                              }
                        }
                        for (size_t i = flag, j = 0; i <= strlen(p) - 1; i++, j++)
                        {
                              StrName = p;
                        }
                        MyFile.close();
                }
      }
      MyFile.close();

下面这段是我需要做改变的代码

while (getline(MyFile, TextIp))
      {
                if (TextIp.find(str) != string::npos)
                {
                        size_t flag = 0;
                        //string IpName = { 0 };
                        //char ip1 = { 0 };
                        const char* p = TextIp.data();

                        for (size_t i = strlen(p) - 1; i > 0; i--)
                        {
                              if (p == * strStop)
                              {
                                        flag = i + 2;
                                        break;

                              }
                        }
                        if (str == "默认网关")
                        {
                              for (size_t i = flag, j = 0; i <= strlen(p) - 1; i++, j++)
                              {
                                        StrName = p;
                        }
                        if (str == "平均")
                        {
                              for (size_t i = flag, j = 0; i <= strlen(p) - 3; i++, j++)
                              {
                                        StrName = p;
                              }
                        }
                        MyFile.close();
                }
      }
      MyFile.close();

我想实现 通过str这个变量在此时的数据不同,进行不同的计算,但是它走到判断if (str == "默认网关") 时,此时str也确实是 默认网关。正常思路应该是开始if里面的for循环。但是它却直接过了,不会进行for循环

zhongyb 发表于 2022-12-26 21:42

https://blog.csdn.net/qq_44631587/article/details/125919776

zhongyb 发表于 2022-12-26 21:23

C++中的string类对象。需要注意,"=="不能用于两个char类型字符串的比较,对于char类型字符串来说,"=="比较的是两个字符串的起始地址。

隐藏英雄 发表于 2022-12-26 21:30

zhongyb 发表于 2022-12-26 21:23
C++中的string类对象。需要注意,"=="不能用于两个char类型字符串的比较,对于char类型字符串来说,"=="比 ...

谢谢,那我这里要通过 变量中的字符串和   我指定的字符串进行比较,来决定使用哪一个for来计算的话 要怎么才能实现呢

隐藏英雄 发表于 2022-12-26 21:46

zhongyb 发表于 2022-12-26 21:42
https://blog.csdn.net/qq_44631587/article/details/125919776

非常感谢提点
我使用了这种方法以后完整实现想要的功能
        while (getline(MyFile, TextIp))
                if (TextIp.find(str) != string::npos)
                {
                        size_t flag = 0;
                        //string IpName = { 0 };
                        //char ip1 = { 0 };
                        const char* p = TextIp.data();
                        for (size_t i = strlen(p) - 1; i > 0; i--)i
                        {
                                if (p == * strStop)
                                {
                                        flag = i + 2;
                                        break;

                                }
                        }
                        const char* s1 = str;
                        const char* s2 = "默认网关";
                        const char* s3 = "平均";
                        int com1 = strcmp(s1, s2);
                        int com2 = strcmp(s1, s3);
                        if (com1 == 0)
                        {
                                for (size_t i = flag, j = 0; i <= strlen(p) - 1; i++, j++)
                                {
                                        StrName = p;
                                }
                        }
                        if (com2 == 0)
                        {
                                for (size_t i = flag, j = 0; i <= strlen(p) - 3; i++, j++)
                                {
                                        StrName = p;
                                }
                        }
                        MyFile.close();
                }
        }
        MyFile.close();
}
页: [1]
查看完整版本: C++ 求助4