gpt4 book ai didi

c++ - 函数中定义的 std::string 保留其先前的值?

转载 作者:行者123 更新时间:2023-11-28 00:51:22 25 4
gpt4 key购买 nike

如果一个字符串是在一个函数中定义的,它会在调用之间保留它的值吗?

像这样:

std::string myFunction( std::string input)
{
std::string output;

for ( int i=0; i < input.length(); i++ )
{
output[i] = input[i];
}

return output;

}

如果第一次调用函数时输入字符串的长度比第二次调用时输入的字符串长度长,则第二次调用返回的字符串仍然有最后几个(与长度差相同)字符之前的通话完好无损。

最佳答案

If a string is defined in a function, does it retain its value between calls ?

在明确定义的代码中它不会,除非它被声明为 static

当前实现的主要问题是循环体:

for ( int i=0; i < input.length(); i++ )
{
output[i] = input[i];
}

在这里,您分配的是 output 的末尾,即 undefined behaviour .一旦进入未定义行为的领域,任何事情都可能发生。

关于c++ - 函数中定义的 std::string 保留其先前的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com