根据字符获取数组索引

时间:2019-12-24 17:25:27

标签: c++ arrays

我有一个数组和一个获取char的函数,此char应该代表数组中的特定索引。 例如,“ a”代表索引0,“ b”代表索引1,“ c”代表索引2 ...

我不想使用开关盒!

void func(char ch, object* arr)
{
    int index = ch//do something
    arr[index]
}

有没有开关外壳的方法吗?这是一种优雅的方法,不需要很多代码。

3 个答案:

答案 0 :(得分:1)

您可以通过获取该字符的ASCII值来做到这一点。

char

如果您希望索引从0而不是97开始,只需将索引减去97:

void func(char ch, object* arr) { int index = (int)ch; //If the ch is 'a', This will return a value of 97(the ascii of lower-case a). arr[index]; }

或更佳:

int index = (int)ch - 97;

选中此链接以查看ASCII table

答案 1 :(得分:0)

我建议使用ASCII码,请参见:https://www.ascii-code.com。 例如,如果char c由用户提供,则它是可打印的char,因此与您相关的代码在(space,32)->(delete,127)之间。尽管如果使用该数组,数组大小限制为95个条目,但是您可以在该范围内接近对象数组中的任何有效单元格。 arr [c-''] <=> arr [0] 无需冗长的if / else / switch案例。

答案 2 :(得分:0)

由于与从import 'package:flutter/material.dart'; void main() { runApp(MainApp()); } class MainApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( backgroundColor: Colors.transparent, centerTitle: true, title: Text("Votre SMARTY PARK"), ), body: MapPage(), ), ); } } class MapPage extends StatefulWidget { @override State<StatefulWidget> createState() { return MapPageState(); } } class MapPageState extends State<MapPage> { var p1 = ["A0", "A1", "A2", "A3"]; List<Widget> widgetlist = List(); MapPageState() { getWidgets(widgetlist); } @override Widget build(BuildContext context) { double scwidth = MediaQuery.of(context).size.width; double scheight = MediaQuery.of(context).size.height; return Column( mainAxisSize: MainAxisSize.max, children: <Widget>[ Container( height: scheight - kToolbarHeight - 24, decoration: BoxDecoration( image: DecorationImage( image: NetworkImage( 'https://images.wallpaperscraft.com/image/parking_cars_underground_131454_240x320.jpg'), fit: BoxFit.cover, ), ), child: ListView( children: widgetlist.map((element) { return element; }).toList(), ), ) ], ); } void getWidgets(List<Widget> wlist) { for (int i = 0; i < p1.length-1; i++) { wlist.add(Row( mainAxisSize: MainAxisSize.max, children: <Widget>[ Container( decoration: BoxDecoration( color: Colors.green, borderRadius: BorderRadius.circular(20.0)), child: FlatButton( child: Text( p1[i].toString(), style: TextStyle(color: Colors.white), ), onPressed: () => print('hii1'), ), ), Container( decoration: BoxDecoration( color: Colors.green, borderRadius: BorderRadius.circular(20.0)), child: FlatButton( child: Text( p1[i + 1].toString(), style: TextStyle(color: Colors.white), ), onPressed: () => print('hii2'), ), ) ], )); } } } a的字母相对应的整数按升序排列,因此可以按以下方式使用z

static_cast<int>