将向量中的所有元素组合成一个新的字符串 MFC VC++
Posted
技术标签:
【中文标题】将向量中的所有元素组合成一个新的字符串 MFC VC++【英文标题】:Combine all elements in vector into a new string MFC VC++ 【发布时间】:2020-11-11 07:37:35 【问题描述】:我正在尝试将向量中的所有元素组合为一个新字符串,但我无法获得如何执行此操作的示例。大多数示例都在向量之间连接,并且在 C++ std::cout
中也是如此。我不知道如何在 MFC VC++ 中做到这一点。
假设我有一个向量(在 CString 中),其中包含元素 I am
a naughty
boy
。我怎样才能将它们组合起来并将它们保存为一个
CString str;
str = "I am a naughty boy"
已编辑:
struct REVLISTDATA
CString str_;
REVLISTDATA(CString str_element) : str_(str_element)
;
std::vector<REVLISTDATA> vec;
【问题讨论】:
这能回答你的问题吗? std::vector to string with custom delimiter 目前还没有,我不知道如何在VC++中应用它们 【参考方案1】:如果我很理解您的要求,这里有一个方法:
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).str_);
稍后编辑:我已经尝试了以下代码并且工作正常:
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
所以,我猜你的异常来自其他方式。
【讨论】:
是的,我已经更新了问题中的向量,它在 CString 中,对吗?但是str.AppendFormat(vec.at(i));
这一行有一个错误,输出显示 error C2664: 'void ATL::CStringT以上是关于将向量中的所有元素组合成一个新的字符串 MFC VC++的主要内容,如果未能解决你的问题,请参考以下文章