C++ 这是指向大小为3的字符数组的指针数组的正确语法吗?
我正在尝试制作自己版本的“自动更正”程序,用于检查与给定单词相似的单词。为了实现这一点,我需要查看标准键盘上字母之间的距离,这样我就有了一个衡量一个单词与另一个单词“接近”程度的指标 在我的程序中,我开始编写一个数组C++ 这是指向大小为3的字符数组的指针数组的正确语法吗?,c++,C++,我正在尝试制作自己版本的“自动更正”程序,用于检查与给定单词相似的单词。为了实现这一点,我需要查看标准键盘上字母之间的距离,这样我就有了一个衡量一个单词与另一个单词“接近”程度的指标 在我的程序中,我开始编写一个数组 const char[3]* KEY_DISTS[] = { "aa0", "ab5", "ba5", "ac3", "ca3", "ad2", "da2" ,... }; 这意味着“a和a之间的距离是0,'a'和'b'之间的距离是5,'b'和'a'之间的距离是5”,等等 接下来
const char[3]* KEY_DISTS[] = { "aa0", "ab5", "ba5", "ac3", "ca3", "ad2", "da2" ,... };
这意味着“a和a之间的距离是0,'a'和'b'之间的距离是5,'b'和'a'之间的距离是5”,等等
接下来我将把这些信息放在一个映射图中,将成对的字符映射为整数,但我想知道到目前为止它是否写得正确,您是否有任何建议给我
const char[3]* KEY_DISTS[]
应该表示“指向大小为3的字符数组的指针的常量数组”,对吗?与标题匹配的声明应该是:
const char (*arr[])[4] = { &"aa0" };
请注意,“arr”
是一个由四个字符组成的数组(它包括终止'\0'
),您需要获取字符串literal的地址(它们是左值,具有静态存储持续时间,因此这是可以接受的)
听起来您可以使用2D阵列来代替:
const char arr[][4] = { "aa0" };
为什么您首先需要该阵列?为什么不直接初始化地图呢?或者为什么不使用文件进行读取?还要注意的是,距离取决于键盘布局……听起来你真的想要“一个大小为3的字符数组”。。。换句话说,
const char KEY_DISTS[][3]=…
。还请注意,字符串文字是一个const char数组,但比字母数多一个元素(因为末尾有一个空终止字符)。所以你需要每个数组的大小为4。是的,我想我要把它们写在一个文本文件中。这将永远需要lol.26 x 26=676成对距离。