Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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++ 转换向量<;int>;分隔字符串_C++_String_Vector - Fatal编程技术网

C++ 转换向量<;int>;分隔字符串

C++ 转换向量<;int>;分隔字符串,c++,string,vector,C++,String,Vector,正如我所看到的,有一种快速而简短的方法可以将向量转换为用c#中的字符分隔的字符串: 我想知道C++中有没有同样的方法来做这个?< /P> #include <sstream> #include <string> #include <vector> #include <iterator> #include <iostream> int main() { std::vector<int> data = {42, 1,

正如我所看到的,有一种快速而简短的方法可以将向量转换为用c#中的字符分隔的字符串:

我想知道C++中有没有同样的方法来做这个?< /P>
#include <sstream>
#include <string>
#include <vector>
#include <iterator>
#include <iostream>

int main()
{
    std::vector<int> data = {42, 1, 2, 3, 4, 5};

    std::ostringstream oss;
    std::copy(data.begin(), data.end(), std::ostream_iterator<int>(oss, ";"));

    std::string result( oss.str() );
    std::cout << result << "\n";
}
可通过
中的
std::acculate
写入:

std::vector data={42,1,2,3,4,5};
std::ostringstream out;
如果(!v.empty())
{
std::copy(v.begin(),v.end()-1,std::ostream_迭代器(out,“;”);

不,如果你是那个意思的话,
std::string
,就没有了!@Robᵩ 我错过了
#include
)+1如果您将输入和结果变量命名为类似于OP的:
std::vector data
std::string result
,可能会有助于教学法。遗憾的是,后面可能没有分号。@DietmarKühl是的,但我无法想出一个类似的简单解决方法摆脱它。我在想类似于
std::string s=v.empty()?std::string{“”}:std::accumulate(v.begin()+1,v.end(),v.front(),[](std::string const&s,int I){返回s+“;+std::to_string(I);
#include <sstream>
#include <string>
#include <vector>
#include <iterator>
#include <iostream>

int main()
{
    std::vector<int> data = {42, 1, 2, 3, 4, 5};

    std::ostringstream oss;
    std::copy(data.begin(), data.end(), std::ostream_iterator<int>(oss, ";"));

    std::string result( oss.str() );
    std::cout << result << "\n";
}
using std::begin;
using std::end;
std::copy(begin(data), end(data), std::ostream_iterator<int>(oss, ";"));
std::string s;
for(auto const& e : v) s += std::to_string(e) + ";";
std::string s = std::accumulate(begin(v), end(v), std::string{},
    [](std::string r, int p){ return std::move(r) + std::to_string(p) + ";"; });
std::vector<int> data = {42, 1, 2, 3, 4, 5};

std::ostringstream out;
if (!v.empty())
{
    std::copy(v.begin(), v.end() - 1, std::ostream_iterator<int>(out, ";"));
    out << v.back();
}

std::string result( out.str() );
std::cout << result << "\n";