簡體   English   中英

函數在c ++中的字符串中查找只能與第一個字符一起使用嗎?

[英]does function find in strings in c++ work only with the first char?

我想在由數字和char組成的string找到一個char ,如果發現程序執行了一些操作,但是當我使用find()函數時,僅當我要查找的char僅在開始時才返回true。字符串!

例:這是問題的一部分!
用戶輸入3個字符串s1,s2,s3; 在前兩個字符串之間有一個char'a 'a' = '+' ,在s2和s3之間有一個char'b 'b' = '=' (這三個字符串應該是數字),但是如果s2是一個包含字母'm'的單詞'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'在字符串的開頭並且沒有其他位置時,它才有效。

else break; 防止循環不斷循環。

它僅在開始時才起作用的原因是,如果不是這樣,則會中斷循環,因此它沒有機會檢查其余部分:

[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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM