C++ 如何创建字符串表
奇怪的是,几乎没有关于这个主题的在线文档。我有一个应用程序,其中包含用于UI的硬编码字符串和分散在源代码中的各种其他内容。我试图总结其中的一些,因为其中的一些需要根据编译应用程序的平台进行更改 我使用了第二个示例(复制如下以供参考),但它对如何实际工作的细节有点透彻。似乎所有内容都在C++ 如何创建字符串表,c++,string,string-table,C++,String,String Table,奇怪的是,几乎没有关于这个主题的在线文档。我有一个应用程序,其中包含用于UI的硬编码字符串和分散在源代码中的各种其他内容。我试图总结其中的一些,因为其中的一些需要根据编译应用程序的平台进行更改 我使用了第二个示例(复制如下以供参考),但它对如何实际工作的细节有点透彻。似乎所有内容都在project\u strings.cpp中重新初始化,并且从未实际调用该代码 // in your project_strings.h namespace MyProjectStrings { const char
project\u strings.cpp
中重新初始化,并且从未实际调用该代码
// in your project_strings.h
namespace MyProjectStrings {
const char *password;
...
}
// the project_strings.cpp for the strings
#include "project_strings.h"
namespace MyProjectStrings {
const char *password = "Password:";
...
}
// some random user who needs that string
#include "project_strings.h"
std::string password(MyProjectStrings::password);
有人能解释一下吗,或者告诉我这是个糟糕的主意,我应该做点别的吗?您链接的示例只是在头文件的名称空间中声明一些
const char*
s,然后在.cpp文件中定义它们。使用的语法不正确,但是,在头文件中的声明应该是<代码>外部const char */COD>而不是<代码> const char */> >作为代码> const 值默认为C++ C++中的内部链接。p>
大多数C++编译器/链接器工具链将把一个翻译单元(
这是一种合理、简单的处理静态字符串的方法,尽管如果需要处理本地化或其他复杂问题,您可能需要一些更动态/复杂的东西。
extern
,因为const
值不是隐式的extern
。