我正在尝试做的示例:
String = "This Is My Sentence"
我希望得到这个结果:“TIMS”,它只需要每个单词的第一个字母。
我正在努力使用 C++。
尝试使用std::string
它的find
功能。
看看Boost Tokenizer - 代码应该看起来像这样(未经测试):
std::string firstLetters(const std::string& str)
{
std::string result="";
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
boost::char_separator<char> sep(" ");
tokenizer tokens(str, sep);
for (tokenizer::iterator tok_iter = tokens.begin();
tok_iter != tokens.end(); ++tok_iter)
{
if (tok_iter->size>0)
{
result+=(*tok_iter)[0];
}
}
return result;
}
或者,您也可以使用Boost String 算法(同样未经测试)
std::string firstLetters(std::string& str)
{
std::string result="";
std::vector<std::string> splitvec;
boost::split( splitvec, str, boost::is_any_of(" "), boost::token_compress_on );
//C++11: for (std::string &s : splitvec)
BOOST_FOREACH(std::string &s, splitvec)
{
if (s.size()>0)
{
result+=s[0];
}
}
return result;
}
为了完整起见,我应该提到strtok函数,但这比 C++ 更像 C ;-)
*约斯特
cout<<myString[0];
for(int i=0;i<(myString.size-1);i++)
{ if(myString[i]==" ")
{
cout<< myString[i+1];
{
}
我没有检查它是否以这种方式编译,但您应该了解这种可能的简单解决方案。它仅适用于与您的示例类似的字符串。您应该像其他人已经建议的那样查看拆分方法。