我需要动态创建一个 char[] 。我想使用 std::string 而不是直接处理 char[],因为我不需要使用 std::string 来处理内存管理。这是我的示例代码:
int main()
{
std::vector<char*> char_vec;
for(size_t i = 0; i < 10; i++)
{
std::string s;
s = "test" + std::to_string(i);
char_vec.push_back(const_cast<char*>(s.c_str()));
}
for(auto& ele : char_vec)
{
std::cout << ele << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
以我的理解,循环内部创建的字符串在每次迭代中都应该是全新的,但实际上,所有字符串都使用相同的地址来存储内容。为什么会出现这种情况?我应该如何修改我的代码以实现我的目标?
感谢您的所有帮助!
2023年1月10日更新:
我根据答案尝试了以下代码:
int main()
{
std::vector<char*> char_vec;
std::vector<std::string> str_vec;
for(size_t i = 0; i < 10; i++)
{
// str_vec.emplace_back("test" + std::to_string(i));
str_vec.push_back("test" + std::to_string(i));
char_vec.push_back(const_cast<char*>(str_vec.back().c_str()));
}
for(auto& ele : char_vec)
{
std::cout …Run Code Online (Sandbox Code Playgroud)