C++ 为什么我会从这个字符串到字符的转换中得到随机输出?
我只是想把字符串转换成更精确的char*字符,但如果我在代码块或项目中运行代码,我会得到不同的输出。在代码块上,我运行以下命令: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
#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