【发布时间】:2011-08-28 22:40:43
【问题描述】:
我有一个关于 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码32也是Space。
【问题讨论】:
-
如果你的意思是空格,写
' '会更清楚。它也适用于(罕见的)非 ASCII 机器。
标签: c++ string loops iterator cout