gpt4 book ai didi

c++ - 程序得到 "Expression: string subscript out of range"

转载 作者:行者123 更新时间:2023-11-30 05:34:55 25 4
gpt4 key购买 nike

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

string Latin(string words)
{

string strWord, strSentence = "";
int length = 0, index = 0;
while (words[index] != '\0')
{
if(words.find(' ', index) != -1)
{
length = words.find(' ', index);
length -= index;
strWord = words.substr(index,length);
strWord.insert(length, "ay");
strWord.insert(length, 1, words[index]);
strWord.erase(0,1);
index += length +1;
}
else
{
strWord = words.substr(index);
length = strWord.length();
strWord.insert(length, "ay");
strWord.insert(length,1,words[index]);
strWord.erase(0,1);
index = words.length();
}

strSentence += (strWord + " ");
}

return strSentence;
}

int main()
{
string str;
getline(cin,str);
str = Latin(str);
cout<<str<<endl;


return 0;
}

我收到此错误消息 http://imgur.com/OI0TgBG

我不知道该怎么办。由于我是新手,这是一个程序,假设要求用户输入一定长度的单词并将它们翻译成 pig Latin。任何帮助将不胜感激。

最佳答案

除非我真的想让自己的生活变得困难,否则我会采取完全不同的做法。首先,我会使用 std::stringstream 将输入字符串分解为要处理的单词。然后,我将使用 std::rotate 将字符串的第一个字符移到末尾。最后,我将所有这些都包装在 std::transform 中,以管理将函数连续应用于每个单词。

std::string line;
std::getline(std::cin, line);

std::stringstream buffer(line);
std::stringstream result;

std::transform(std::istream_iterator<std::string>(buffer),
std::istream_iterator<std::string>(),
std::ostream_iterator<std::string>(result, " "),
[](std::string s) {
std::rotate(s.begin(), s.begin() + 1, s.end());
s += "ay";
return s;
});

当然,这并不知道以元音开头的单词或像 shch 这样的字母对之类的特殊规则,但它看起来像是在外面手头任务的范围。

有关 std::rotate 的更多信息,我建议观看 Sean Parent 的一些视频。

关于c++ - 程序得到 "Expression: string subscript out of range",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050880/

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