1

基本的に私は状況を発見したい: ユーザーが文字列を入力すると、「サラ」と言うことができ、誰かがサラという名前の各文字に対して操作を実行したい場合、文字列データ型に格納されます。どうすれば実行できますか? 最初に文字列から s を取得し、次に a を取得し、次に r を取得するなどです。組み込み関数またはより良い戦略はありますか? ありがとう。

4

3 に答える 3

4

: とラムダ関数を使用する 1 つの簡単な方法std::for_each(C++11)

std::string str="sarah";
std::for_each( str.begin(), str.end(),
               [](char &x){

                  //Play with x
               } 
               );

それ以外の場合は、単純に for ループを使用します

for(size_t i=0;i<str.size();++i)
   {
    //Play with str[i];
   }

または C++11 :-

   for(char& x : str) {
     //Play with x;
   }
于 2013-10-24T18:34:35.097 に答える
1

これを使用できます:

  1. 範囲ベースの for ループを使用して、 a の文字をstd::stringループします (これは C++11 のものであり、GCC、clang、および VC11 ベータの最近のリリースで既にサポートされています)。

    std::string str = "sarah";
    for(char& c : str) {
        do_things_with(c);
    }
    
  2. std::stringa の文字を反復子でループする:

    std::string str = "sarah";
    for(std::string::iterator it = str.begin(); it != str.end(); ++it) {
        do_things_with(*it);
    }
    
  3. std::string昔ながらの for ループで a の文字をループする:

    for(std::string::size_type i = 0; i < str.size(); ++i) {
        do_things_with(str[i]);
    }
    
  4. null で終わる文字配列の文字をループする:

    char* str = "sarah";
    for(char* it = str; *it; ++it) {
        do_things_with(*it);
    }
    

参照:文字列内のすべての文字について

于 2013-10-24T18:35:08.533 に答える