Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++;? 我正在编写一个C++类,它需要引用由音节计数排序的英语或法语单词。格式化的字典文件根据其语言命名,读入后,类中的英语和法语函数共享相同的逻辑 //Files needed for French const char sSingleSyllablePath[] = "FR-SGL.txt"; const char sDoubleSyllablePath[] = "FR-DBL.txt"; const char sTripleSyllablePath[] = "FR-TRI.txt"; //..._C++_Function_Parameters_Parameter Passing - Fatal编程技术网

在C++;? 我正在编写一个C++类,它需要引用由音节计数排序的英语或法语单词。格式化的字典文件根据其语言命名,读入后,类中的英语和法语函数共享相同的逻辑 //Files needed for French const char sSingleSyllablePath[] = "FR-SGL.txt"; const char sDoubleSyllablePath[] = "FR-DBL.txt"; const char sTripleSyllablePath[] = "FR-TRI.txt"; //...

在C++;? 我正在编写一个C++类,它需要引用由音节计数排序的英语或法语单词。格式化的字典文件根据其语言命名,读入后,类中的英语和法语函数共享相同的逻辑 //Files needed for French const char sSingleSyllablePath[] = "FR-SGL.txt"; const char sDoubleSyllablePath[] = "FR-DBL.txt"; const char sTripleSyllablePath[] = "FR-TRI.txt"; //...,c++,function,parameters,parameter-passing,C++,Function,Parameters,Parameter Passing,阵列需要具有相同的名称,但引用不同的文件: //Files needed for English const char sSingleSyllablePath[] = "EN-SGL.txt"; const char sDoubleSyllablePath[] = "EN-DBL.txt"; const char sTripleSyllablePath[] = "EN-TRI.txt"; //... 将包含所有文件的目录传递给构造函数,然后在初始化函数中引用文件名字符串 使用正确的文件名分配调

阵列需要具有相同的名称,但引用不同的文件:

//Files needed for English
const char sSingleSyllablePath[] = "EN-SGL.txt";
const char sDoubleSyllablePath[] = "EN-DBL.txt";
const char sTripleSyllablePath[] = "EN-TRI.txt";
//...
将包含所有文件的目录传递给构造函数,然后在初始化函数中引用文件名字符串


使用正确的文件名分配调用此文件的最佳方式是什么?拥有两个代码相同但名称不同的独立类很容易,但似乎效率不高。因为有许多必需的文件,所以在构造函数中有大量的参数列表似乎也是不对的。

您可以使用std::string:

const std::string sSingleSyllablePath = "-SGL.txt";
const std::string sDoubleSyllablePath = "-DBL.txt";
const std::string sTripleSyllablePath = "-TRI.txt";
然后,您必须定义如下函数:

std::string getLocalized(const std::string &loc, const std::string &filename)
{
  return loc + filename;
}

这是一个单独的函数,只是因为-如果您需要在创建本地化文件名之前做一些事情,该怎么办。

您可以将常量指针传递给常量数据:

void My_Function(char const * const p_text);
与使用
std::string
不同,这不会创建新变量

BTW,您可能需要考虑将字符串声明为<代码>静态< /代码>。我发现

static
关键字允许编译器发出直接访问字符串的代码(而不是复制它们)。您仍然可以传递指向静态字符串的指针。

构建一个链接到语言相关字符串表的区域设置对象。您不能在给定语言和可插入数字的单个函数中“构造”文件名吗?