如何在此代码中正确使用strcmp()?

时间:2015-12-07 00:19:07

标签: c++ string strcmp

我想比较cs[i][a].days[x]"Mon",以便了解我是否可以将此字符串放入星期一的目录中... 但它似乎不起作用? (没有匹配的功能)

#include <iostream>
  #include <string>
  #include <cstring>
    struct course{
        string name;
        string *days; //dynamic array of days int start_hr, start_min;
        int start_hr, start_min;
        int end_hr, end_min;
    };
            void print_day2(course **cs,int num, int number, int day){
                    cout << "Monday: " << endl;
                    for(int i = 0; i <number; i++){
                        for(int a = 0; a < num;a++){
                            for(int x = 0; x < day; x++){
                                if(strcmp(cs[i][a].days[x], "Mon")==0){
                                    cout << cs[i][a].days[x] <<endl;
                                }
                            }
                        }
                    }

2 个答案:

答案 0 :(得分:3)

尽管使用->c_str()调用strcmp进行C风格比较很有吸引力,但最好只使用->compare()或简单==,因为它们更具原生性C ++习语

C风格(不推荐):

strcmp (cs[i][a].days[x].c_str(), "Mon")

会员功能:

cs[i][a].days[x].compare("Mon")

关系运算符

cs[i][a].days[x] == "Mon"

请注意,这不会将"Mon"转换为string,因为->compare()==都会覆盖const char *

答案 1 :(得分:0)

您需要使用c_str()将字符串转换为C字符串(空终止)

相关问题