将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
}
假设你的 vec 是 std::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
}
所以,我猜你的异常是从其他方面来的。
我正在尝试将向量中的所有元素合并为一个新字符串,但我无法获得如何执行此操作的示例。大多数示例都是在向量之间连接的,也在 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
}
假设你的 vec 是 std::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
}
所以,我猜你的异常是从其他方面来的。