-1

次のコードを C/C++ に変換するにはどうすればよいですか?

string alphabet = "abcdefghijklmnopqrstuvwxyz";

foreach(char c in alphabet)
{
    // Do something with the letter
}

ボタンが押されたときにアルファベットにループして各文字を印刷したい。Xbox / PS3コントローラーを使用するときに文字を入力する方法のように。アルファベットのセット全体にスクロールしてから、ボタンを押して入力します。

基本的に、これはマイクロコントローラー ( mbed ) 環境で使用されています。C/C++ でのループで正しいロジックを作成する方法を知る必要があるだけです。

4

3 に答える 3

14
#include <string>
#include <algorithm>

void doSomething( const char& );

int main() {
  std::string alphabet = "abcdefghijklmnopqrstuvwxyz";
  std::for_each( alphabet.begin(), alphabet.end(), &doSomething);
}

また

#include <string>
#include <boost/foreach.hpp>

int main() {
  std::string alphabet = "abcdefghijklmnopqrstuvwxyz";
  BOOST_FOREACH( char c, alphabet) {
    //do something
  }
}

C++2011 の場合

#include <string>
#include <algorithm>

int main() {
  std::string alphabet = "abcdefghijklmnopqrstuvwxyz";
  std::for_each( alphabet.begin(), alphabet.end(),[](const char& c){ /*do something*/} );
}

あるいは

#include <string>

int main() {
  std::string alphabet = "abcdefghijklmnopqrstuvwxyz";
  for( char c : alphabet) {
    //do something
  }
}

編集:編集で、これが組み込み環境で機能することを望んでいると述べました

int main() {
  const char* alphabet = "abcdefghijklmnopqrstuvwxyz";
  for( char* ptr = alphabet; *ptr!='\0'; ++ptr) {
    //do something (*ptr)
  }
}

編集2:

ASCIIのようなものを使用していることがわかっている場合

int main() {
  for( char l = 'a'; l<='z'; ++l) {
    //do something (l)
  }
}
于 2013-08-09T17:24:30.190 に答える
2

使用する言語を決定する必要があります。C と C++ は 2 つの異なる言語であるため、両方の言語に対する 1 つの答えはありません。

最新の C++ では:

for (auto c : alphabet)
{
    //do something with letter
}

古い学校の C++ には、さまざまなオプションがあります。最も醜いのはおそらく

for (size_t i = 0; i < alphabet.size(); ++i)
{
    char c = alphabet[i];
    //do something with letter
}

stringC では、その名前の標準型がないため、内容によって異なります。従来のゼロ終端文字配列の場合:

char const * alphabet = "abcdefghijklmnopqrstuvwxyz";

次のようなもの:

for (char const * p = alphabet; *p; ++p)
{
    char c = *p;
    // do something with letter
}
于 2013-08-09T17:24:46.270 に答える
-1
#include <iostream>
#include <string>

int main ()
{
  std::string str ("abcdefghijklmnopqrstuvwxyz");
  for ( std::string::iterator itr=str.begin(); it!=str.end(); ++it)
  {
  //do something
  }
  return 0;
}
于 2013-08-09T17:22:25.090 に答える