Проблемы длины строки, связанные с strlen()
Я чистю свои навыки C++ и набираю демо-программу, как показано ниже, но у меня есть разная длина исходного текстового значения и целевого текстового значения, так что моя демо-версия выдает исключение. Я пишу эту демонстрацию в Visual Studio 2019. пожалуйста, помогите мне в этом вопросе.
#include <iostream> #include <string.h> #include <stdlib.h> using namespace std; class CMessage { private: char* pmessage=0; public: void ShowIt() { cout << endl << pmessage; } //constructor CMessage(const char* text = "default message") { pmessage = new char[strlen(text) + 1]; cout << " the length of text is:" << strlen(text) << endl; cout << " the length of pmessage is:" << strlen(pmessage) << endl; strcpy_s(pmessage,sizeof pmessage,text); } //destructor prototype ~CMessage(); }; CMessage::~CMessage() { cout << "destructor called." << endl; delete[] pmessage; } int main() { std::cout << "Hello World!\n"; CMessage Motto("a miss is as good as a smile."); Motto.ShowIt(); }
Что я уже пробовал:
Я думаю, что это связано с широкими символьными функциями.