への変換整数ベクトル(std :: vector)を使用すると、そのベクトルのすべてをchar配列(char [])に簡単に変換できます(1,2,3) - >( '1'、 '2'、 '3') は、これは私が試したものですが、それは動作しません:std :: vector <int>からchar [] C++
std::vector<int> v;
for(int i = 1; i < 10; i++){
v.push_back(i);
}
char *a = &v[0];
への変換整数ベクトル(std :: vector)を使用すると、そのベクトルのすべてをchar配列(char [])に簡単に変換できます(1,2,3) - >( '1'、 '2'、 '3') は、これは私が試したものですが、それは動作しません:std :: vector <int>からchar [] C++
std::vector<int> v;
for(int i = 1; i < 10; i++){
v.push_back(i);
}
char *a = &v[0];
std::transform
は仕事のための適切なツールです。
std::vector<int> iv {1, 2, 3, 4, 5, 6};
char ca[10] {};
using std::begin;
using std::end;
std::transform(begin(iv), end(iv), begin(ca), [](int i) { return '0' + i; });
あなたはCスタイルの配列であることをca
を必要としない場合は、私がお勧め代わりにstd::array
またはstd::vector
を使用してください。後者はbegin(ca)
の代わりにstd::back_inserter(ca)
が必要です。
char配列が動的に割り当てられるように、これを行う方法はありますか?それは可変サイズを持つことができます –
@AllenHuangあなたは 'new'でそれを割り当てて、' std :: transform'にポインタ自体を渡すことができますが、もっと良い考え方は 'std :: vector'を使うことです。 – Quentin
これはzLibでこれを使用しているので、私はchar配列を使用しています。 –
それはのような単純なことができこの
std::vector<int> v { 1, 2, 3 };
std::vector<char> c;
for(int i : v) c.push_back('0' + i);
あなたの方法は、あなたが整数とsymblsは、ご使用のプラットフォーム上で表現方法を学ぶ必要が動作しない理由を実現します。
最初にcharベクトルに格納してみませんか?
std::vector<char> v;
for(int i = 1; i < 10; i++){
v.push_back(i + '0');
}
すでにベクターに数字を持っているなら、あなたはstd::transformとback_inserterを使用することができます。
std::vector<int> v;
std::vector<char> c;
std::transform(v.begin(), v.end(), std::back_inserter(c), [](int i){return '0' + i;});
しかし、なぜ単に言わない:
std::vector<char> v;
for(char i = '0'; i < '9'; i++)
{
v.push_back(i);
}
あなたがしてstd::transform
を使用することができますstd::back_inserter
、多分このようなもの:
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> vI{0,1,2,3,4,5,6,7,8,9};
std::vector<char> vC;
std::transform(vI.begin(), vI.end(), std::back_inserter(vC), [](const int &i){ return '0'+i; });
for(const auto &i: vC)
{
std::cout << i << std::endl;
}
return 0;
}
これをする。また 'std :: string'に変換しないのはなぜですか? – NathanOliver
'itoa'を使ってintからcharに行きたいと思います。 std :: transform(http://www.cplusplus.com/reference/algorithm/transform/)はコンテナでそれを行うことができます。 – JETM
整数が9より大きい場合、または0より小さい場合はどのような結果が得られますか? – IInspectable