如何将以下代码翻译成C / C ++?
string alphabet = "abcdefghijklmnopqrstuvwxyz";
foreach(char c in alphabet)
{
// Do something with the letter
}
我想循环进入字母表,并在按下按钮时打印每个字符。就像使用Xbox / PS3控制器时输入字符一样。您滚动到整个字母表集,然后按一个按钮进行输入。
基本上,这是在微控制器(mbed)环境中使用的。我只需要知道如何在C / C ++中循环创建正确的逻辑。
答案 0 :(得分:11)
#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)
}
}
EDIT2:
如果你知道你正在使用像ASCII这样的东西
int main() {
for( char l = 'a'; l<='z'; ++l) {
//do something (l)
}
}
答案 1 :(得分:2)
您应该决定使用哪种语言; C和C ++是两种不同的语言,因此两种语言都没有一个答案。
在现代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
}
在C中,它取决于string
是什么,因为没有具有该名称的标准类型。如果它是传统的零终止字符数组:
char const * alphabet = "abcdefghijklmnopqrstuvwxyz";
然后像:
for (char const * p = alphabet; *p; ++p)
{
char c = *p;
// do something with letter
}
答案 2 :(得分:-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;
}