2016-04-29 35 views
1

これは私が使用しているサンプルプログラムです。ベクトルの要素をC++で結合する方法

while(split.good()){ 
      split >>first; 
      split >>second; 
      word=first + second; 
      //cout<< static_cast<char> (word)<<endl; 
      vec.push_back(static_cast<char> (word)); 

     } 

第1と第2はint値です。 私は完全な単語を作るためにベクトルの要素を組み合わせたいと思います。

おかげで、

答えて

0

まず第一に、あなたのループを変更するには、.eof()または.good()をチェックすると、詳細はWhy is iostream::eof inside a loop condition considered wrong?を参照して、悪い考えです。代わりに、実際に値を読み取ったことを確認するには、

while(split >> first && split >> second) 

を使用してください。

質問に間違いがありましたので、以下の回答は実際には必要ではありませんでした。代わりに@Tas's answerを確認してください。

次の例では、整数を文字列に変換したいと正しく理解していますか?それは少し不明ですが、std::to_string()を見てください。たぶん、あなたが何かしたい:

while(split >> first && split >> second) { 
    word = first + second; 
    vec.push_back(std::to_string(word)); 
} 
+0

混乱のために、「言葉」は本当にchar値で申し訳ありませんああ、私はあなたが彼らの後に追加の整数値から取得char値のために与えたそのわずか悪い名前charに変更されます。だから私が得意なことは、char要素のベクトルです。私はベクトルのchar要素を組み合わせて単語を作る方法を知りたかったのです。 vec = {'h'、 'e'、 'l'、 'l'、o '}のようなものです。 と私はベクトルvecから文字列 "こんにちは"が必要です。私はこれが意味を持ち、あなたのご意見に感謝したいと思います。 –

+0

@FreAあなたがしたいことを誤解していたと思います。とにかく、@答えはちょうどあなたがしたいことです、ちょうどそれはそれの 'の中の部分のためのこの答えを残すつもりです。 –

1

まず第一に、あなたはあなたのwhileループについて@Raphael Miedl's adviceに耳を傾ける必要があります。単一の単語にあなたのvector内のすべての要素を組み合わせること

、あなたがfollowing std::string constructor that takes two iteratorsを使用することができます。

テンプレート<クラスInputIt> のbasic_string(最初InputIt、InputIt最後、 constのアロケータ&のalloc =アロケータ());始まりと終わり、あなたのvectoriterator

パス:

const std::string s{std::begin(vec), std::end(vec)}; 

これはstd::stringvecの各要素を追加します。また、あなたはforループを使用することができます。

std::string s; 
for (auto c : vec) 
{ 
    // Add each character to the string 
    s += c; 
} 
関連する問題