C++ 生成std::string的唯一id

C++ 生成std::string的唯一id,c++,C++,我想在32位应用程序中生成任何有限的std::string大小的唯一id(即大小为6)。做这件事的最佳快捷方法是什么?查找字符串哈希,例如 但是您永远不会得到唯一的哈希值,因为字符串可能比您的大小6长得多,并且显示的结果是哈希值必须发生冲突。很难从您的问题中分辨出您在问什么,但下面生成的字符串顺序为“1”、“2”、“3”: #包括 #包括 std::string GetUniqueId(){ 静态int n=1; std::ostringstream os; os什么类型的id?数字?有多独特?

我想在32位应用程序中生成任何有限的std::string大小的唯一id(即大小为6)。做这件事的最佳快捷方法是什么?

查找字符串哈希,例如


但是您永远不会得到唯一的哈希值,因为字符串可能比您的大小6长得多,并且显示的结果是哈希值必须发生冲突。

很难从您的问题中分辨出您在问什么,但下面生成的字符串顺序为“1”、“2”、“3”:

#包括
#包括
std::string GetUniqueId(){
静态int n=1;
std::ostringstream os;

os什么类型的id?数字?有多独特?对于你的应用程序、会话、机器、世界来说?它可以有足够唯一的任何ASCII字符,这样我就不会再获得相同的id。它可以是1到8之间的任意大小,用于我的应用程序。在这种情况下,明显的序列1、2、3……有什么问题。我正在用unique保存数据文件中的ID,如果我使用1..2..3..sequence,那么下次加载文件时,我如何知道该ID是否已提供给某些数据?我想如果我从每个可能具有ID的唯一数据生成ID会更好。为什么不在原始问题中声明?这里得到的答案的质量直接取决于请注意,此方法不是线程安全的。至少需要保护
static
变量不受并发访问的影响。
#include <string>
#include <sstream>

std::string GetUniqueId() {
   static int n = 1;
   std::ostringstream os;
   os << n++;
   return os.str();
}