gpt4 book ai didi

c++ - 无故循环退出

转载 作者:行者123 更新时间:2023-11-30 02:08:07 25 4
gpt4 key购买 nike

我有一个关于 C++ 的问题。这是我当前的功能:

string clarifyWord(string str) {
//Remove all spaces before string
unsigned long i = 0;
int currentASCII = 0;

while (i < str.length()) {
currentASCII = int(str[i]);
if (currentASCII == 32) {
str.erase(i);
i++;
continue;
} else {
break;
}
}

//Remove all spaces after string
i = str.length();
while (i > -1) {
currentASCII = int(str[i]);
if (currentASCII == 32) {
str.erase(i);
i--;
continue;
} else {
break;
}
}
return str;
}

只是为了解决基本和明显的问题,我有 #include <string>using namespace std;所以我确实可以访问字符串函数。

问题是循环正在退出,有时会跳过第二个循环。我正在传递 str成为" Cheese "它应该删除字符串之前和之后的所有空格。

在主函数中,我还为 clarifyWord(str) 分配了一个变量其中 str在上面。它似乎没有使用 cout << str; 打印出来.

在打印字符串或使用字符串循环时,我是否遗漏了什么?还有ASCII码32Space .

最佳答案

好的,您调用的删除函数如下所示:

string& erase ( size_t pos = 0, size_t n = npos );

n 参数是要删除的项目数。 npos 的意思是,删除所有直到字符串末尾的内容,所以将第二个参数设置为 1。

str.erase(i,1)

[编辑]

您可以将第一个循环更改为:

while (str.length() > 0 && str[0] == ' ')
{
str.erase(0,1);
}

第二个循环:

while (str.length() > 0 && str[str.length() - 1] == ' ')
{
str.erase(str.length() - 1, 1);
}

关于c++ - 无故循环退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7224457/

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