0

我想char在 a 中找到string由数字和字符组成的 a,如果发现程序执行了一些操作,但是当我使用函数时find(),如果我要查找的字符仅在字符串的开头,它只会返回 true !!! !!

例如:这是问题的一部分!
用户输入 3 个字符串 s1 , s2 , s3 ; 在前 2 个字符串之间有 char'a' = '+'并且在 s2 和 s3 之间有 char 'b' = '=' (这 3 个字符串应该是 numbers )但是如果 s2 是一个包含字母的单词'm',则程序将 s1 和 s3 转换为整数并写入完整的操作 ex :如果 i/p 是 3247 + 5machula2 = 3749 那么 o/p 将是 3247 + 502 = 3749

这是我要解决的问题http://www.spoj.com/problems/ABSYS/ 和我的这部分代码有问题:

int T;
int x,y,z;
string s1 ;
string s2  , s3 ;
char a , b;
cin>>T;
for(int i=0 ; i<T ; i++)
{
         cin>>s1>>a>>s2>>b>>s3;


for (int k=0; k<s2.size(); k++)
{ 
    if (k==s2.find("m"))
    {     
        stringstream ss(s1);
        stringstream ss3(s3);

        ss>>x;
        ss3>>z;

        cout<<s1<<" "<<a<<" "<<z-x<<" "<<b<<" "<<s3<<endl;
    }   
    else break;       
}

这是一个在第二个字符串上循环的循环,如果它找到一个字符'm',它应该执行上面提到的操作,但这里的问题是它只有'm'在字符串的开头而不是其他地方才有效。

4

2 回答 2

1

else break;可以防止循环循环。

于 2013-01-05T20:45:49.727 回答
0

它仅在开始时才起作用的原因是,如果不是,则您会跳出循环,因此它没有机会检查其余部分:

[first iteration]
if (0 == s2.find("m")) //if found at beginning
    //do stuff
else break; //exit loop if not found at beginning

而不是循环,如果你只是想看看是否有一个 m,只需使用find()

if (s2.find('m') != std::string::npos)
    //"m" found in string, do the operations on s1 and s3
于 2013-01-05T20:46:20.340 回答