gpt4 book ai didi

c++ - 为什么我从这个字符串到 char 转换得到随机输出?

转载 作者:行者123 更新时间:2023-11-30 00:43:04 25 4
gpt4 key购买 nike

我只是想将字符串转换为 char(更准确地说是 char*),但无缘无故,如果我在 codeBlocks 或我的项目中运行代码,我会得到不同的输出。所以在 codeBlocks 上,我运行这个:

#include <iostream>
#include <string>

using namespace std;

int main()
{
std::string stlstring = "abc";
std::cout << stlstring << std::endl;
char* writable = new char[stlstring.size() + 1];
std::copy(stlstring.begin(), stlstring.end(), writable);
writable[stlstring.size()] = '\n';
std::cout << writable ;
}

我得到了这个输出:enter image description here

在我的项目中,我运行相同的行,但在事件处理程序中:

void RePROGUIUser::applyOptions(wxCommandEvent& event) {
std::string stlstring = "abc";
std::cout << stlstring << std::endl;
char* writable = new char[stlstring.size() + 1];
std::copy(stlstring.begin(), stlstring.end(), writable);
writable[stlstring.size()] = '\n';
std::cout << writable;
}

输出:enter image description here

所以我必须在我的 GUI 上按下一个按钮才能发生这种情况,但它实际上不应该改变任何东西(而且我对将 wxWidget 标签放在这里持怀疑态度)。

有人知道吗?

最佳答案

您的代码有 undefined behavior , 意味着一切皆有可能。请注意 null terminator'\0' 而不是 '\n'。所以改变

writable[stlstring.size()] = '\n';

writable[stlstring.size()] = '\0';

关于c++ - 为什么我从这个字符串到 char 转换得到随机输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56900369/

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