【发布时间】:2018-02-14 14:48:16
【问题描述】:
我目前有很多字符数组存储简单的英文字符串以供显示。我也有指向这些字符数组的指针。
char helloAr[20] = "Hello";
char timeAr[20] = "Time";
char dogAr[20] = "Dog";
char* helloPtr = helloAr;
char* timePtr = timeAr;
char* dogPtr = dogAr;
我正在添加更多不同语言的字符数组,首先是法语。
char helloArFr[20] = "Bonjour";
char timeArFr[20] = "temps";
char dogArFr[20] = "chien";
如果用户选择法语,我计划更改所有指针(当前指向英语字符数组)指向的地址,因此它们现在指向法语字符数组。我假设我可以简单地为这些指针分配一个新值来执行此操作,
helloPtr = helloArFr;
timePtr = timeArFr;
dogPtr = dogArFr;
但是我的实际代码会有很多数组,所以我想使用循环来执行此操作,而不是像上面那样使用大量语句。
为此,我计划创建一个指向我的字符数组地址的字符指针数组。
char* charArrAddresses [NUMBER_OF_TEXT_ARRAYS]=
{
&helloAr,
&timeAr,
&dogAr,
&helloArFr,
&timeArFr,
&dogArFr,
};
我还计划将所有指针存储在一个数组中,以便在我的单个语句中通过它们在数组中的位置来引用它们,但这是我需要一些帮助的地方,因为我不确定如何执行此操作。大概是这样的吧?
char ** langPtrs[NUMBER_OF_LANG_POINTERS]=
{
helloPtr,
timePtr,
dogPtr,
};
在循环内的单个语句中,我将使用所选语言和 char 数组的数量来计算 charArrAddresses 的正确索引,现在我们称之为 X。我将使用循环的值(比如i)来索引我的langPtrs 数组。所以在我的单曲中想说的话,
for(i = 0; i<NUMBER_OF_LANG_POINTERS; i++)
{
langPtrs[i]= charArrAddresses[X];
}
我正在尝试将存储在charArrAddresses 的索引X 中的字符数组的地址分配给langPtrs 数组中索引i 中的指针。我只需要关于如何声明 langPtrs 数组以及如何编写上面的单个语句的帮助。
【问题讨论】:
-
首先选择语言,如果选择c++,则使用
std::string -
我假设@user463035818 的意思是您应该选择一种编程语言。 c 和 c++ 是非常不同的语言,尽管有明显的相似之处。我不认为他的意思是你应该选择一种语言。由于问题是关于多语言支持的,我认为区分这一点可能很重要。
-
... 是的,当然,错过了可能的误解。感谢您为支持多种语言所做的努力,但在编写代码时,您最好选择一种编程语言
-
使用 std::vector<:string>> 可能更简单,然后当您需要访问数据时,唯一改变的就是向量。 (每个向量对应一种语言)
-
感谢 cmets,我正在编写由其他人编写的代码,因此我被束缚在使用 char 字符串和 char 字符串指针、char 字符串及其指针以及一些指向这些指针的其他指针数组在很多地方(类、方法、显示/打印函数等)绑定到代码中,我无法更改它的工作方式。我只是想使用那里的东西并实现上面的例子。有人知道我如何用上面的想法解决我的问题吗?如何正确声明 langPtrs 数组以及如何在上面编写我的单个语句?