相关疑难解决方法(0)

Pretty-print C++ STL containers

Please take note of the updates at the end of this post.

Update: I have created a public project on GitHub for this library!


I would like to have a single template that once and for all takes care of pretty-printing all STL containers via operator<<. In pseudo code, I'm looking for something like this:

template<container C, class T, String delim = ", ", String open = "[", String close = "]">
std::ostream & operator<<(std::ostream & o, const C<T> …
Run Code Online (Sandbox Code Playgroud)

c++ templates operator-overloading pretty-print c++11

379
推荐指数
5
解决办法
4万
查看次数

将vector <int>转换为string

在C++中,将int(即vector<int>)向量转换为字符串的最简单方法是什么?

c++ string vector

41
推荐指数
3
解决办法
11万
查看次数

如何将vector <int>转换为字符串?

我试图将值从C++传递给TCL.因为我不能在不使用一些复杂模块的情况下传递指针,所以我在考虑将向量转换为char数组,然后将其作为空终止字符串传递(这相对简单).

我有一个矢量如下:

12, 32, 42, 84  
Run Code Online (Sandbox Code Playgroud)

我希望转换成以下内容:

"12 32 42 48"
Run Code Online (Sandbox Code Playgroud)

我想到的方法是使用迭代器迭代向量,然后将每个整数转换为其字符串表示形式,然后将其添加到char数组(最初通过传递向量的大小动态创建).这是正确的方式还是有功能已经这样做了?

c++ stl

19
推荐指数
2
解决办法
3万
查看次数

基于范围的循环可以知道结束吗?

给出最小的C++ 11 STL示例:

set<int> S = {1,2,3,4};
for(auto &x: S) {    
   cout << x;
   cout << ",";
}
Run Code Online (Sandbox Code Playgroud)

有没有办法x在结束前检查是否正确?此示例中的目标是输出1,2,3,4而不是最后的最后一个逗号.目前我使用带有两个迭代器的标准for循环,

set<int>::const_iterator itr;
set<int>::const_iterator penultimate_end_itr = --S.end();
for(itr=S.begin(); itr!=penultimate_end_itr;++itr) 
    cout << (*itr) << ',';
cout << (*penultimate_end_itr);
Run Code Online (Sandbox Code Playgroud)

哪个有效,但非常麻烦.有没有办法在基于范围的for循环中进行检查?

编辑:问题的关键是打印逗号分隔列表.我想知道基于范围的for循环是否具有列表中倒数第二个元素的任何知识(即它是在结束之前的一个).提出了最小的例子,所以我们都有一个共同的代码块来讨论.

c++ stl c++11

16
推荐指数
2
解决办法
5121
查看次数

可以提升:algorithm :: join()concat容器的浮点数?

Boost join可用于连接一个字符串容器,可选择用分隔符字符串分隔,如下例所示:boost :: algorithm :: join的一个很好的例子

我的STL技能很弱.我想知道是否有任何方法可以为数字容器(浮点数,双打数,整数)使用相同的函数?看起来应该有一个或两个衬里来适应其他类型.

还有stl的复制功能,这里有一个很好的例子: 如何打印出矢量的内容?

但我不喜欢它如何在每个元素之后添加分隔符字符串.我想使用boost.

c++ string boost stl adapter

16
推荐指数
1
解决办法
6575
查看次数

将Vector <int>转换为String

我想制作一个首先输入字符串数组的程序,然后将其转换为整数,然后将其推送到矢量.

代码是这样的:

string a;
vector<long long int> c;
cout << "Enter the message = ";
cin >> a;   
cout << endl;

cout << "Converted Message to integer = ";
for (i=0;i<a.size();i++) 
{
    x=(int)a.at(i);
    cout << x << " "; //convert every element string to integer
    c.push_back(x);
}
Run Code Online (Sandbox Code Playgroud)

输出 :

Enter the message = haha
Converted Message to integer = 104 97 104 97
Run Code Online (Sandbox Code Playgroud)

然后我把它写在一个文件中,在下一个程序中我想把它读回来,并将它转换回字符串,我的问题是如何做到这一点?将矢量[104 97 104 97]转换回字符串"haha".

我非常感谢任何帮助.谢谢.

c++ string vector

4
推荐指数
2
解决办法
2万
查看次数

什么是`std :: string(*)(int)`中的星号(*)

这是代码,我不明白星号(*) std::string(*)

using boost::algorithm::join;
using boost::adaptors::transformed;
auto tostr = static_cast<std::string(*)(int)>(std::to_string);
Run Code Online (Sandbox Code Playgroud)

这是原始代码

c++ boost

2
推荐指数
1
解决办法
83
查看次数