Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我会从这个字符串到字符的转换中得到随机输出?_C++_String_Char - Fatal编程技术网

C++ 为什么我会从这个字符串到字符的转换中得到随机输出?

C++ 为什么我会从这个字符串到字符的转换中得到随机输出?,c++,string,char,C++,String,Char,我只是想把字符串转换成更精确的char*字符,但如果我在代码块或项目中运行代码,我会得到不同的输出。在代码块上,我运行以下命令: #include <iostream> #include <string> using namespace std; int main() { std::string stlstring = "abc"; std::cout << stlstring << std::endl; char* w

我只是想把字符串转换成更精确的char*字符,但如果我在代码块或项目中运行代码,我会得到不同的输出。在代码块上,我运行以下命令:

#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 ;
}
我得到了这个输出:

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

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;
}
输出:

因此,我必须按下GUI上的一个按钮才能实现这一点,但它真的不应该改变任何事情,我对将wxWidget标记放在这里表示怀疑

有人知道吗?

您编写的代码意味着一切皆有可能。请注意,名称为“\0”,但不是“\n”。所以改变

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

你的代码有,意味着一切皆有可能。请注意,名称为“\0”,但不是“\n”。所以改变

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


这类bug在FAPEPALILN之前重读一百次。在FACEPALMEN之前重读一百次的bug。在C++中不需要分配新的char指针来完成这一操作。您只需创建一个新字符串对象,将当前对象分配给new one构造函数中的新对象,并使用+=运算符添加字符“\n”:std::string stlstring2stlstring;stlstring2+='\n';这只是一个演示代码。他的真正意图是别的。他可能应该使用STLSTRIGN。CXSTRUE不需要分配新的char指针来在C++中执行这个操作。您只需创建一个新字符串对象,将当前对象分配给new one构造函数中的新对象,并使用+=运算符添加字符“\n”:std::string stlstring2stlstring;stlstring2+='\n';这只是一个演示代码。他的真正意图是别的。他应该使用stlstring.c_str