C++ 如何将字符串从/发送到C++;(6.0)至C++;动态链接库?
当我将文本发送到我的DLL并以C++ 如何将字符串从/发送到C++;(6.0)至C++;动态链接库?,c++,string,dll,C++,String,Dll,当我将文本发送到我的DLL并以char*的形式接收时,发生了一些奇怪的事情;如果文本少于13个字符或大于77个字符,则返回的文本是垃圾 这是我的密码:- //(1) DLL函数: char* __stdcall ApplyArabicMapping( char* input) { // 1-Conver char* to string std::string inputString = input; // 2-Calling our function strin
char*
的形式接收时,发生了一些奇怪的事情;如果文本少于13个字符或大于77个字符,则返回的文本是垃圾
这是我的密码:-
//(1) DLL函数:
char* __stdcall ApplyArabicMapping( char* input)
{
// 1-Conver char* to string
std::string inputString = input;
// 2-Calling our function
string encodedStr = Encoding::arabicHandling(inputString);
// 3-Convert from String to char*
char* returnStr = (char*)encodedStr.c_str();
return (returnStr);
}
char* inputStr = "Some text";
char* resutls = ApplyArabicMapping(inputStr);
当
ApplyArabicMapping()
返回时,悬空指针被返回为encodedStr
被破坏,导致未定义的行为
若要更正,请尽可能返回std::string
,或者使用new
复制char*
缓冲区并返回它:当不再需要时,调用者必须删除[]
:
char* returnStr = new char[encodedStr.length() + 1];
std::copy(encodedStr.begin(), encodedStr.end(), returnStr);
*(returnStr + encodedStr.length()) = 0; // null terminate.
您是否在调试器中运行它并逐步查看代码以了解发生了什么?请提供一些有关如何发送和接收文本的示例代码。