C++ 将每个整数添加到向量中<;int>;一串 for(vector::const_迭代器i=vec.begin();i!=vec.end();++i) { 整数=*i; char*c; itoa(编号c,10); 结果+=c; } std::cout

C++ 将每个整数添加到向量中<;int>;一串 for(vector::const_迭代器i=vec.begin();i!=vec.end();++i) { 整数=*i; char*c; itoa(编号c,10); 结果+=c; } std::cout,c++,char,int,C++,Char,Int,您可以使用C++11中提供的: for (vector<int>::const_iterator i = vec.begin(); i != vec.end(); ++i) { int number = *i; char* c; itoa(number, c, 10); result += c; } std::cout << result << std::endl; #包

您可以使用C++11中提供的:

for (vector<int>::const_iterator i = vec.begin(); i != vec.end(); ++i)
    {
        int number = *i;
        char* c;
        itoa(number, c, 10);
        result += c;
    }
    std::cout << result << std::endl;
#包括
#包括
#包括
int main()
{
std::vec;
对于(int i=0;i<100;i++)
{
向量推回(i);
}
std::字符串结果;
对于(std::vector::const_迭代器i=vec.begin();i!=vec.end();++i)
{
结果+=标准::到字符串(*i);
}
std::cout您可以使用C++11中提供的:

for (vector<int>::const_iterator i = vec.begin(); i != vec.end(); ++i)
    {
        int number = *i;
        char* c;
        itoa(number, c, 10);
        result += c;
    }
    std::cout << result << std::endl;
#包括
#包括
#包括
int main()
{
std::vec;
对于(int i=0;i<100;i++)
{
向量推回(i);
}
std::字符串结果;
对于(std::vector::const_迭代器i=vec.begin();i!=vec.end();++i)
{
结果+=标准::到字符串(*i);
}

std::cout您的代码中有一个错误:

用非初始化的char指针调用<代码> ITOA~()/Case>这是不好的,因为<代码> ITOA.()/Cuth>需要有效的缓冲区,此外, ItoA()/Cuth>不是C++标准的一部分。

最好把 char */COM>后面用更现代的C++特性来做,特别是,它是一个字符串生成器,它在转换方面很强大(而且通常比字符串+=操作符快)。它通过用元素“推”到“<代码> < p>来构建一个字符串。 用非初始化的char指针调用<代码> ITOA~()/Case>这是不好的,因为<代码> ITOA.()/Cuth>需要有效的缓冲区,此外, ItoA()/Cuth>不是C++标准的一部分。


最好把“代码”> char */COM>后面,用更现代的C++特性来做,特别是,它是一个字符串生成器,它在转换方面很强大(而且通常比字符串+=操作符快)。它通过将元素推到它的“代码> > P>将声音与工作类似的方式组合成一个字符串。

#包括
#包括
#包括
#包括
auto main()->int
{
常数std::向量向量向量{1,2,3};
const std::string result=std::accumulate(vec.begin()、vec.end()、std::string(),
[](常量标准::字符串和s,常量int值)
{
返回s+std::to_字符串(值);
});

std::cout组合听上去像是一项工作

#包括
#包括
#包括
#包括
auto main()->int
{
常数std::向量向量向量{1,2,3};
const std::string result=std::accumulate(vec.begin()、vec.end()、std::string(),
[](常量标准::字符串和s,常量int值)
{
返回s+std::to_字符串(值);
});

那么,如果您遇到编译器错误,为什么您决定不在问题中包含您遇到的错误?此外,
char*c;itoa(number,c,10)
是未定义的行为,因为未初始化
c
。请在示例代码中包含变量的定义。这可能与此有关。因此,如果您遇到编译器错误,为什么您决定不在问题中包含您遇到的错误?此外,
char*c;itoa(number,c,10);
是未定义的行为,因为未初始化
c
。请在示例代码中包含变量的定义。这可能与此有关。请
{}<代码> > 语句中的块标记。即使它只是其中的一个语句。@ ApalOMER是一个好的做法,如果你打算允许不知道C++的人编辑你的C++代码。@ Juangopangz“不知道C++的人”不应该编辑C++代码…源码:我见过太多可怕things@ChristianG没错。但许多编码指南似乎都是专为这些人设计的。顺便说一句,我们更喜欢那个网站。更好的资源。请
{}<代码> > 语句中的块标记。即使它只是其中的一个语句。@ ApalOMER是一个好的做法,如果你打算允许不知道C++的人编辑你的C++代码。@ Juangopangz“不知道C++的人”不应该编辑C++代码…源码:我见过太多可怕things@ChristianG没错。但许多编码指南似乎都是专为这些人设计的。顺便说一句,我们更喜欢那个网站。更好的资源。我很好奇:
auto main()->int
int main()相比有什么好处
?没有好处,只是我的一个噱头。我很好奇:
auto main()->int
int main()
相比有什么好处?没有好处,只是我的一个噱头
#include <iostream>
#include <vector>
#include <string>
#include <sstream>

int main()
{
    std::vector<int> vec;
    for (int i = 0;i<100;i++)
        vec.push_back(i);
    std::stringstream ss;
    for (auto& number : vec)
        ss << number;
    std::cout << ss.str() << std::endl;
}
#include <iostream>
#include <numeric>
#include <string>
#include <vector>

auto main() -> int
{
  const std::vector<int> vec{ 1, 2, 3 };
  const std::string result = std::accumulate(vec.begin(), vec.end(), std::string(),
    [](const std::string& s, const int value)
    {
      return s + std::to_string(value);
    });

  std::cout << result << std::endl;
}