gpt4 book ai didi

c++ - 如何从 C++ 中的另一个字符串分配未初始化的字符串值

转载 作者:行者123 更新时间:2023-11-30 01:46:32 26 4
gpt4 key购买 nike

我对编程很陌生。我的问题可能很愚蠢,但如果有人能指导我,那将会很有帮助。

请看下面我的代码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
cout << "you have choose to Reverse the text" << endl;

string inputstring;
string outputstring;

cout << "Enter the string you want to reverse" << endl;
getline(cin, inputstring);
int n = inputstring.length();

for (int i = 0; i < n; i++)
{
outputstring[i] = inputstring[n - 1 - i]; // problem in this line
}
}

到这里它工作正常 inputstring[n - 1 - i] 但是当我尝试将它的值分配给 outputstring 时。我收到错误消息。

最佳答案

outputstring 为空,因此您在此处越界访问它:

outputstring[i] = inputstring[n - 1 - i];

您必须确保在进入循环时outputstring 的长度至少为n。有多种方法可以实现这一点。

一个解决方案是在读入 inputstring 后创建大小为 n。在这里,我们用 * 创建它:

std::string outputstring(n, '*');

您还可以在创建后调整字符串的大小:

outputstring.resize(n);

现在您可以访问 [0, n) 范围内的 Noutputstring[N]。这使您的循环有效。参见 this working example .

或者,您可以考虑就地反转 inputstring。请注意,在实际代码中,这可以使用 std::reverse 轻松完成:

std::reverse(inputstring.begin(), inputstring.end());

关于c++ - 如何从 C++ 中的另一个字符串分配未初始化的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33050741/

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