gpt4 book ai didi

c++ - 将 C++ 字符串存储到 char* vector 中

转载 作者:行者123 更新时间:2023-11-30 02:24:28 25 4
gpt4 key购买 nike

我试图将这个字符串存储到一个指针 vector 中。这只是代码的起点。最终, vector 将存储用户输入的单词,如果 vector 没有,则将其添加到 vector 中,或者显示该单词已经在 vector 中。

我尝试使用 strcpy(),但后来它告诉我使用 strcpy_s()。所以我现在做了,现在它每次都没有错误地崩溃了。谁能告诉我这里发生了什么。

vector<char*> wordBank;

string str;
cin >> str;

wordBank[0] = new char[str.length() + 1];
strcpy_s(wordBank[0], str.length() + 1 , str.c_str() );

cout << wordBank[0];

delete[] wordBank[0];

最佳答案

我不会考虑vector<char*> wordBank;这个 C++ 代码,而是碰巧使用了一些 C++ 特性的 C 代码。

C++ 中的标准库可以让您的生活更轻松。你应该使用 std::vector<std::string>相反。

vector<string> wordBank;
wordBank.push_back(str);

它避免了所有指针的东西,所以你不需要做内存管理(这是摆脱指针的一个很好的理由)。

对于 strcpy_s , 它是 strcpy 的更安全版本,因为你必须显式指定目标缓冲区的大小,这可以避免复制期间缓冲区溢出。

然而,strcpy_s是非标准的和特定于 MS 的,从不使用 strcpy_s除非你只想在 MSVS 上编译你的代码。使用 std::copy反而。

关于c++ - 将 C++ 字符串存储到 char* vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45315709/

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