我有一个数组和一个获取char的函数,此char应该代表数组中的特定索引。 例如,“ a”代表索引0,“ b”代表索引1,“ c”代表索引2 ...
我不想使用开关盒!
void func(char ch, object* arr)
{
int index = ch//do something
arr[index]
}
有没有开关外壳的方法吗?这是一种优雅的方法,不需要很多代码。
答案 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>