2016-04-29 92 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)); 

     } 

第一个和第二个是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元素的向量。我想知道如何将矢量的字符元素合并为一个单词。有点像 vec = {'h','e','l','l','o'}; 我想要一个向量vec的字符串“hello”。我希望这是有道理的,并感谢您的意见。 –

+0

@FreA猜想我误解了你想做的事情。无论如何,@Tas的答案正是你想要做的,只是要离开这个答案,因为它是'while'的一部分。 –

1

首先,你应该听@Raphael Miedl's advicewhile循环。

所有的元素结合在vector成一个字,你可以使用following std::string constructor that takes two iterators

模板<类InputIt> 的basic_string(InputIt第一,InputIt最后, 常量分配器& ALLOC =分配器());

通在开始和结束vectoriterator

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

这会的vec每个元素添加到std::string。另外,您也可以使用for循环:

std::string s; 
for (auto c : vec) 
{ 
    // Add each character to the string 
    s += c; 
} 
相关问题