如何在if语句C ++中使用char []

时间:2019-07-09 03:36:23

标签: c++

在我的代码中,我将初始化char []。创建char数组的主要原因是列出我可能分析的所有组。假设这些不同的组代表三个不同大小的球,分别命名为“ ball1”,“ ball2”和“ ball3”。

对于这三个小组球,我在不同的时间有三个速度阵列。

int speed1[5] = {1,10,15,20,25};
int speed3[5] = {1,10,15,40,65};
int speed2[5] = {1,10,15,40,85};

现在,我想使用if语句打印速度。假设我要说的是当球的大小为“ ball1”时,我要打印速度的第一个数组:speed1 [5] = {1,10,15,20,25};

#include<iostream>
#include<string> 
    void test(){
int speed1[5] = {1,10,15,20,25};
int speed3[5] = {1,10,15,40,65};
int speed2[5] = {1,10,15,40,85};
        char ball[32]={"ball1","ball2","ball3"};  
        float speed;
        if (ball == ball1){

std::cout<<speed1<<endl;
        }
    }

您能否建议我如何在if条件语句中编写char字符串,以便仅对该字符串执行任何算术运算?

1 个答案:

答案 0 :(得分:0)

我建议您完全不要使用char[]

这是一个非常简单的示例,说明如何显示球的速度(从0到2的整数):

#include <iostream>
#include <vector>

const std::vector<std::vector<int>> ball_speeds
  {
   {1,10,15,20,25},
   {1,10,15,40,65},
   {1,10,15,40,85}
  };

void test (size_t ball) {
  const auto& speeds = ball_speeds.at (ball);
  std::cout << speeds.at (0)
        << "," << speeds.at (1)
        << "," << speeds.at (2)
        << "," << speeds.at (3)
        << "," << speeds.at (4)
        << "\n";
}

int main () {
  test (0);
}

如果这不是您想要的,请编辑问题以使其更具体。

输出看起来像这样:

1,10,15,20,25

您可以使用带有unordered_map键的std::string而不是vector来存储球速:

#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>

const std::unordered_map<std::string, std::vector<int>> ball_speeds
  {
   {"ball1", {1,10,15,20,25} },
   {"ball2", {1,10,15,40,65} },
   {"ball3", {1,10,15,40,85} }
  };

void test (std::string ball) {
  const auto& speeds = ball_speeds.at (ball);
  std::cout << speeds.at (0)
        << "," << speeds.at (1)
        << "," << speeds.at (2)
        << "," << speeds.at (3)
        << "," << speeds.at (4)
        << "\n";
}

int main () {
  test ("ball1");
}

无论如何,就您在问题中所陈述的用例而言,就我而言,都不需要if语句。

一些其他建议:

  1. 尝试在C ++中使用std::string(和std::string_view),而不是char[]

  2. 如果您确实需要使用char[](或char*),请熟悉the cstring header file

  3. 特别是有std::strcmp用于比较C样式字符串。