c++字符序列函数总是返回空字符串
C++ char sequence function always return empty string
刚刚开始学习c++并尝试用以下代码创建一个简单的函数:
char* substring(int start, int end, const char* target)
{
size_t length = strlen(target);
char result[(length + 1)];
int iterator = 0;
for(int i = start; i < length; i++)
{
if(i <= end)
{
result[iterator] = target[i];
iterator++;
}
}
result[iterator] = ' ';
cout << result << endl; // This give correct result "aya";
return result;
}
当我在主方法上使用这些函数时:
int main(int argc, char** argv) {
char some_text[] = "Saya Makan";
char* sub = substring(1, 3, some_text); // No string returned
cout << "Substring Result is: " << sub;
return 0;
}
输出如下:
aya
Substring Result is:
RUN SUCCESSFUL (total time: 44ms)
如结果所示,我的函数除了空字符串之外没有返回任何东西,尽管在返回之前有一行代码,"result"变量正确地返回了结果。你能给我解释一下我的函数里面发生了什么吗,我遗漏了什么吗?
您正在返回指向局部数组的指针,该指针不需要在函数之外存在。
您需要使用malloc
动态分配缓冲区,从而使缓冲区在函数范围之外保持持久。当然,记得以后再加free
。
哦,我注意到它是c++。
因此,放弃malloc
和free
的想法,只需使用std::string
而不是char *
。
相关文章:
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- C 字符串返回字符串的整数/双精度/长整型值
- 如何从COM模块中的函数返回字符串数组?
- React Native (Android):无法通过 JNI 在 jobject 中返回字符串
- 我如何在函数 cpp 中返回字符串
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 格式化返回字符串C++
- 返回字符串vs通过引用传递字符串以更新值
- 如何在不使用 STL 的情况下从函数反转字符串后返回字符串C++?
- 使用 ctypes 从函数返回字符串C++会给出大的 int,而不是 char 指针
- 从 C++ 中的模板函数返回字符串和整数
- 返回字符串的散点回文计数
- C++重载字符串 [] 运算符以返回字符串和
- 返回字符串和不同向量数据类型的映射C++
- 字符串函数不返回字符串? C++
- 从函数返回字符串C++错误
- 如何在返回字符串的函数中不忽略void值
- 我想将字符串转换为 Json 格式并返回字符串向量作为答案
- C - 返回字符串时的分割故障
- 使用向量和字符串函数返回字符串