【发布时间】:2011-10-05 15:27:23
【问题描述】:
我正在尝试编写一个函数,该函数将在字符串中查找任何偶数字符子集,并通过在字符串中插入一个空格将它们分成两半。例如,给定字符串“AA BBB CCDD”,我的字符串应该转换为“A A BBB CC DD”。
我的 breakString() 函数似乎不起作用,我不知道为什么。有人可以帮忙吗?
void breakString(string &str1)
{
int pos1 = -1;
int pos2 = str1.find_first_of(" ", pos1+1);
while (pos2 != -1)
{
if(((pos2-pos1)-1)%2 == 0)
{
str1.insert((pos2-pos1)/2, 1, ' ');
return;
}
else
{
pos1 = pos2;
pos2 = str1.find_first_of(' ', pos1+1);
}
}
if((str1.size() - pos1)%2 == 1)
str1.insert((str1.length()-pos1)/2, 1, ' ');
return;
}
【问题讨论】:
-
您好,@user,欢迎来到 Stack Overflow!这是一个学习练习吗?如果是这样,请将其标记为“作业”。
-
那些-1应该是
string::npos。 -
凯莉你好,欢迎来到堆栈溢出!这是寻求帮助时的提示。通常,写“它不起作用”的信息量不是很大。它可能意味着各种各样的事情(不编译、崩溃、不产生正确的输出)。准确描述您的问题有助于我们为您提供帮助。
-
嗨 K-ballo,我有“while (pos2 != str1.npos)”,但是当我使用 F10 单步执行程序时,它显示 pos2 等于 -1,而不是npos,所以我将代码更新为-1。我刚试过改回str1.npos,还是不行。
-
嗨,安德烈,感谢您的建议 - 这是有道理的!