C++ 如何创建字符串表

C++ 如何创建字符串表,c++,string,string-table,C++,String,String Table,奇怪的是,几乎没有关于这个主题的在线文档。我有一个应用程序,其中包含用于UI的硬编码字符串和分散在源代码中的各种其他内容。我试图总结其中的一些,因为其中的一些需要根据编译应用程序的平台进行更改 我使用了第二个示例(复制如下以供参考),但它对如何实际工作的细节有点透彻。似乎所有内容都在project\u strings.cpp中重新初始化,并且从未实际调用该代码 // in your project_strings.h namespace MyProjectStrings { const char

奇怪的是,几乎没有关于这个主题的在线文档。我有一个应用程序,其中包含用于UI的硬编码字符串和分散在源代码中的各种其他内容。我试图总结其中的一些,因为其中的一些需要根据编译应用程序的平台进行更改

我使用了第二个示例(复制如下以供参考),但它对如何实际工作的细节有点透彻。似乎所有内容都在
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++编译器/链接器工具链将把一个翻译单元()中的所有字符串放在可执行文件的只读数据段中。p>


这是一种合理、简单的处理静态字符串的方法,尽管如果需要处理本地化或其他复杂问题,您可能需要一些更动态/复杂的东西。

这不是在您复制的问题/答案中解释的吗?另外,我也不太明白你的问题与你抄袭的问题有什么不同……可能是重复的答案只是张贴了代码。我在问它到底应该如何工作。这些变量看起来都是在project_strings.cpp中声明的。此外,project_strings.cpp中的代码似乎从未真正运行过,因为每次我调用MyProjectStrings::password时,我都一无所获。不过,您所问的与原来的问题没有什么不同,我认为您应该对答案发表评论(要求澄清),而不是提出新问题。我可能错了,但对我来说,它闻起来像是一个重复的问题,所问的是Qt特定的。我问的是C++标准的实践。试试“C”外设。也就是说,您只在一个位置声明变量。然后,您可以在每个地方使用“extern”来定义变量。(别忘了声明变量-可能会导致崩溃)理解,但为什么当我试图在包含“project_strings.h”的文件中访问所有字符串时,它们的值都是空的?实际上,链接答案中的示例代码是错误的,在头文件声明中需要显式的
extern
,因为
const
值不是隐式的
extern