gpt4 book ai didi

c++ - 与 boost::interprocess 共享内存时从 std::string 转换为 "MyShmString"

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:25 26 4
gpt4 key购买 nike

我正在关注这个boost::interprocess guide还有这个Stack Overflow thread为了在不同进程之间共享 std::string 变量。具体来说,我有一个函数接收一个 std::string 应该在其他进程之间共享:

void registerFailedTests(std::string failed_test_name) {

boost::interprocess::permissions perm;
perm.set_unrestricted();

boost::interprocess::shared_memory_object::remove(unit_tests_constants::shm_failed_tests_list.c_str());
boost::interprocess::managed_shared_memory managed_shm_failed_tests_list(boost::interprocess::open_or_create, unit_tests_constants::shm_failed_tests_list.c_str(), 10240, 0, perm);

typedef boost::interprocess::allocator<char, boost::interprocess::managed_shared_memory::segment_manager> CharAllocator;
typedef boost::interprocess::basic_string<char, std::char_traits<char>, CharAllocator> myShmString;

CharAllocator charallocator(managed_shm_failed_tests_list.get_segment_manager());

myShmString mystring(charallocator);
}

问题是参数 failed_test_name 是一个 std::string,我不能把它变成 myShmString 类型以便在共享内存中分配它。

我怎样才能做到这一点?

非常感谢。

最佳答案

只需使用从输入序列复制的任何构造函数:

myShmString mystring(failed_test_name.begin(), failed_test_name.end(), charallocator);

关于c++ - 与 boost::interprocess 共享内存时从 std::string 转换为 "MyShmString",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49768830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com