我想要做的例子:
String = "This Is My Sentence"
我希望得到这样的结果:“TIMS”,它只取每个单词的第一个字母。
我正在努力使用C ++。
答案 0 :(得分:0)
尝试使用std::string
及其find
功能。
答案 1 :(得分:0)
cout<<myString[0];
for(int i=0;i<(myString.size-1);i++)
{ if(myString[i]==" ")
{
cout<< myString[i+1];
{
}
我没有检查它是否以这种方式编译,但你可以了解这种可能的简单解决方案。 它只适用于与您的示例类似的字符串。您应该像其他人已经建议的那样查看Split方法。
答案 2 :(得分:0)
答案 3 :(得分:0)
看一下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 Algorithms(再次未经测试)
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; - )
*斯特