2016-11-08 2 views
-1

文字列に特定の単語(M3)が含まれていることを確認する必要があります。この単語には数字が含まれています。問題は、数字が常に同じではないということです。 Qt C++で数値を検証する方法はありますか?文字列の中に手紙に番号が付いていることを確認するにはどうすればよいですか?

私は明らかに働いていない、これを試してみました:

if (line.contains("M"+"%i")) { 
    qDebug() << "contains the word"; 
} 
+2

数字の値がi、 '" M "+ QString :: number(i)' – Thomas

+3

であると仮定して、まずあなたの要件を正式に書き留めます。そうであるように、彼らはあまりにもあいまいであり、有用であるために漠然としていません。たとえば、文字列「FOO BARM78 BAZ」にはあなたの魔法の言葉が含まれているのですか?そうではありませんか?どのように質問を解釈するかによって、答えは「はい」または「いいえ」のいずれかになります。何をする必要があるか分からずに、明らかに提案をすることはできません。 –

答えて

0

あなたは、文字列内の特定のパターンを検索するregular expressionsを使用することができます。 C++ 11以降、C++言語には、正規表現を処理するために使用できるregular expression libraryが含まれています。

簡単な例:あなたの数字が1桁以上できるかどうもちろん

#include <iostream> 
#include <regex> 
#include <string> 

int main() 
{ 
    std::string s; 
    //Fill s with the text you want to check for the pattern here! 
    // I'll use a fixed value here, but you'll need to change that. 
    s = "bla M5 bla"; 
    //regular expression for "letter M followed by one digit" 
    std::regex myRegex("M\\d"); 
    //std::regex_search checks whether there is a match between the 
    // given sequence s and the regular expression. Returns true, if 
    // there is a match. Returns false otherwise. 
    if (std::regex_search(s, myRegex)) 
    { 
    std::cout << "Text contains the search pattern.\n"; 
    } 
    else 
    { 
    std::cout << "Text does not contain the search pattern.\n"; 
    } 
    return 0; 
} 

、それに応じて、正規表現を調整する必要があります。

+0

感謝!これは私を大いに助けました、私は実際にQTを使用して以来、私は実際に別のクラスを使いました、 '正規表現'のように動作する 'QRegExp' – waroxx

関連する問題