将vector中的所有元素组合成一个新的字符串MFC VC++

Combine all elements in vector into a new string MFC VC++

我正在尝试将向量中的所有元素合并为一个新字符串,但我无法获得如何执行此操作的示例。大多数示例都是在向量之间连接的,也在 C++ std::cout 中。我不确定如何在 MFC 中执行此操作 VC++。

假设我有一个包含元素 I am a naughty boy 的向量(在 CString 中)。我怎样才能将它们组合起来并保存为

CString str;

str = "I am a naughty boy"

已编辑:

struct REVLISTDATA {
CString str_;
REVLISTDATA(CString str_element) : str_(str_element) {}
};
std::vector<REVLISTDATA> vec;

如果我很好理解你的要求,这里有一个方法:

for (size_t i = 0; i < vec.size(); ++i)
{
    str.AppendFormat(vec.at(i));
    if (i < vec.size() - 1)
        str.AppendFormat(_T(" "));  // spaces between words
}

假设你的 vecstd::vector<CString>

编辑: 因此,您应该使用 str.AppendFormat(vec.at(i).str_);

而不是 str.AppendFormat(vec.at(i));

稍后编辑:我已经尝试了以下代码并且工作正常:

struct REVLISTDATA
{
    CString str_;
    REVLISTDATA(CString str_element) : str_(str_element) {}
};

std::vector<REVLISTDATA> vec;

vec.push_back(REVLISTDATA("I"));
vec.push_back(REVLISTDATA("am"));
vec.push_back(REVLISTDATA("a"));
vec.push_back(REVLISTDATA("naughty"));
vec.push_back(REVLISTDATA("boy"));

CString str;
for (size_t i = 0; i < vec.size(); ++i)
{
    str.AppendFormat(vec.at(i).str_);
    if (i < vec.size() - 1)
        str.AppendFormat(_T(" "));  // spaces between words
}

所以,我猜你的异常是从其他方面来的。