gpt4 book ai didi

c++ - 为什么不能将一个字符串的索引位置分配给另一个字符串,但可以将其分配给中间字符?

转载 作者:行者123 更新时间:2023-12-01 15:12:28 24 4
gpt4 key购买 nike

我一直在进行一些C++挑战以进行编码,当我尝试创建一个反转字符串的函数时,我碰到了这一点。出于某种原因,将结果[i]分配给str [str.length()-i]不起作用,但是将str [str.length()-i]分配给holding,然后将其保持为result [i]则可行。
谁能解释一下?

//this works
std::string reverse(std::string str){
std::string result;
char holding;
for(uint i = 0; i <= str.length(); i++){
holding = str[str.length() - i];
result += holding;
}
return result;
}
//this doesn't
std::string reverse(std::string str){
std::string result;
for(uint i = 0; i <= str.length(); i++){
result[i] = str[str.length() - i];
}
return result;
}

最佳答案

result的大小为0。几乎在所有情况下,访问result[i]都会导致未定义的行为。您可以使用以下方式预分配所需的内存

std::string reverse(std::string str){
std::string result(str.length(), '\0');
for(uint i = 0; i < str.length(); i++){
result[i] = str[str.length() - i - 1];
}
return result;
}

关于c++ - 为什么不能将一个字符串的索引位置分配给另一个字符串,但可以将其分配给中间字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63172058/

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