Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C+中的Foreach循环+;C的等价物# 如何将此代码转换为C++?< /p> string[] strarr = {"ram","mohan","sita"}; foreach(string str in strarr) { listbox.items.add(str); }_C#_C++ - Fatal编程技术网

C# C+中的Foreach循环+;C的等价物# 如何将此代码转换为C++?< /p> string[] strarr = {"ram","mohan","sita"}; foreach(string str in strarr) { listbox.items.add(str); }

C# C+中的Foreach循环+;C的等价物# 如何将此代码转换为C++?< /p> string[] strarr = {"ram","mohan","sita"}; foreach(string str in strarr) { listbox.items.add(str); },c#,c++,C#,C++,如果您有一个数组,您可以简单地使用for循环。(很抱歉,我不会为您键入for循环的代码。)在C++0x中 for(string str: strarr) { ... } 但在此之前,请使用普通for循环。Boost有一个宏可以为您执行此操作 类似于: const char* strarr = {"ram","mohan","sita", 0L}; for(int i = 0; strarr[i]; ++i) { listbox.items.add(strarr[i]); } 也适用于标

如果您有一个数组,您可以简单地使用
for
循环。(很抱歉,我不会为您键入
for
循环的代码。)

在C++0x中

for(string str: strarr) { ... }

但在此之前,请使用普通for循环。

Boost有一个宏可以为您执行此操作

类似于:

const char* strarr = {"ram","mohan","sita", 0L};

for(int i = 0; strarr[i]; ++i)
{
  listbox.items.add(strarr[i]);
}

也适用于标准C。在C++中不确定如何检测SARARR的结束,而没有空元素,但以上应该工作。

std::array strarr={“ram”、“mohan”、“sita”};
for(const std::string&str:strarr){
listbox.items.add(str);
}
前c++11
std::string strarr[]={“ram”、“mohan”、“sita”};
对于(int i=0;i<3;++i){
listbox.items.add(strarr[i]);
}

std::string strarr[]={“ram”、“mohan”、“sita”};
std::向量strvec(strarr,strarr+3);
std::vector::迭代器itr=strvec.begin();
while(itr!=strvec.end()){
列表框。项目。添加(*itr);
++itr;
}
使用:
boost::array strarr={“ram”、“mohan”、“sita”};
BOOST_FOREACH(std::string&str,strarr){
listbox.items.add(str);
}
字符串[]strarr= {“ram”、“mohan”、“sita”}

foreach(strarr中的字符串str) { listbox.items.add(str); }

for(int i=0;i
注意:您还可以将字符串放入std::vector而不是数组:

std::vector<std::string> strvec;
strvec.push_back("ram");
strvec.push_back("mohan");
strvec.push_back("sita");

for (std::vector<std::string>::const_iterator i = strvec.begin(); i != strvec.end(); ++i)
    listbox.items.add(*i);
std::vector strvec;
strvec.推回(“ram”);
strvec.推回(“默翰”);
strvec.推回(“sita”);
for(std::vector::const_迭代器i=strvec.begin();i!=strvec.end();++i)
列表框.项目.添加(*i);
只是为了好玩(新的lambda功能):

static std::列出一些\u列表;
向量s;
s、 推回(“a”);
s、 推回(“b”);
s、 推回(“c”);
对于每个(s.begin()、s.end()、[=](字符串str)
{
一些列表。推回(str);
}
);

对于_each(some_list.begin()、some_list.end()、[](string ss){cout,使用boost是最好的选择,因为它可以帮助您提供简洁明了的代码,但是如果您想坚持使用STL

void listbox_add(const char* item, ListBox &lb)
{
    lb.add(item);
}

int foo()
{
    const char* starr[] = {"ram", "mohan", "sita"};
    ListBox listBox;
    std::for_each(starr,
                  starr + sizeof(starr)/sizeof(char*),
                  std::bind2nd(std::ptr_fun(&listbox_add), listBox));

}
简单形式:

std::string  data[] = {"ram","mohan","sita"};
std::for_each(data,data+3,std::bind1st(std::mem_fun(&Y::add), &(listbox.items)));
行动中的一个例子:

#include <algorithm>
#include <string>
#include <iostream>
#include <functional>

class Y
{
    public:
      void add(std::string value)
      {
          std::cout << "Got(" << value << ")\n";
      }
};
class X
{
    public:
      Y  items;
};

int main()
{
    X listbox;

    std::string  data[] = {"ram","mohan","sita"};
    std::for_each(data,data+3,std::bind1st(std::mem_fun(&Y::add), &(listbox.items)));
}
#包括
#包括
#包括
#包括
Y类
{
公众:
void add(标准::字符串值)
{

std::cout在习惯了C#中的
var
关键字之后,我开始在C++11中使用
auto
关键字。它们都通过推理确定类型,并且在您只想让编译器为您确定类型时非常有用。下面是代码的C++11端口:

#include <array>
#include <string>

using namespace std;

array<string, 3> strarr = {"ram", "mohan", "sita"};
for(auto str: strarr) {
  listbox.items.add(str);
}
#包括
#包括
使用名称空间std;
数组strarr={“ram”、“mohan”、“sita”};
用于(自动str:strarr){
listbox.items.add(str);
}
<代码> < P>使用C++ 14:

#include <string>
#include <vector>


std::vector<std::string> listbox;
...
std::vector<std::string> strarr {"ram","mohan","sita"};    
for (const auto &str : strarr)
{
    listbox.push_back(str);
}
#包括
#包括
std::向量列表框;
...
std::向量strarr{“ram”、“mohan”、“sita”};
用于(常量自动和str:strarr)
{
列表框。推回(str);
}

如果它是一个静态分配的数组,那么
sizeof(strarr)/sizeof(strarr[0])
会获取数组中的元素数;但是,如果它是一个动态分配的数组(或者如果你只有一个指针),那么就无法获取大小——你必须通过其他带外方式获取它。数组大小的正确类型是(因此,数组的索引是
std::size\t
。我知道谷歌在这方面很差劲,所以这不是你的错,但最新版本是1.44,所以链接应该是容器1\u 44,而不是1\u 35。(你必须手动修复谷歌结果。)谢谢。我已经下载了1.44并在我的系统上构建了它,但在我发布它时没有考虑它的版本。@ronag:接受的答案反映了我对
std::for_each
的看法。关于数组的大小,比如
for(int I=0;I
for (int i = 0; i < sizeof strarr / sizeof *strarr; ++i)
    listbox.items.add(strarr[i]);
std::vector<std::string> strvec;
strvec.push_back("ram");
strvec.push_back("mohan");
strvec.push_back("sita");

for (std::vector<std::string>::const_iterator i = strvec.begin(); i != strvec.end(); ++i)
    listbox.items.add(*i);
      static std::list<string> some_list;

      vector<string> s; 
      s.push_back("a");
      s.push_back("b");
      s.push_back("c");

      for_each( s.begin(), s.end(), [=](string str) 
        {
          some_list.push_back(str);
        }

  );

  for_each( some_list.begin(), some_list.end(), [](string ss) { cout << ss; } );
void listbox_add(const char* item, ListBox &lb)
{
    lb.add(item);
}

int foo()
{
    const char* starr[] = {"ram", "mohan", "sita"};
    ListBox listBox;
    std::for_each(starr,
                  starr + sizeof(starr)/sizeof(char*),
                  std::bind2nd(std::ptr_fun(&listbox_add), listBox));

}
std::string  data[] = {"ram","mohan","sita"};
std::for_each(data,data+3,std::bind1st(std::mem_fun(&Y::add), &(listbox.items)));
#include <algorithm>
#include <string>
#include <iostream>
#include <functional>

class Y
{
    public:
      void add(std::string value)
      {
          std::cout << "Got(" << value << ")\n";
      }
};
class X
{
    public:
      Y  items;
};

int main()
{
    X listbox;

    std::string  data[] = {"ram","mohan","sita"};
    std::for_each(data,data+3,std::bind1st(std::mem_fun(&Y::add), &(listbox.items)));
}
#include <array>
#include <string>

using namespace std;

array<string, 3> strarr = {"ram", "mohan", "sita"};
for(auto str: strarr) {
  listbox.items.add(str);
}
#include <string>
#include <vector>


std::vector<std::string> listbox;
...
std::vector<std::string> strarr {"ram","mohan","sita"};    
for (const auto &str : strarr)
{
    listbox.push_back(str);
}