-5

我正在尝试做的示例:

String = "This Is My Sentence"

我希望得到这个结果:“TIMS”,它只需要每个单词的第一个字母。

我正在努力使用 C++。

4

4 回答 4

0

尝试使用std::string它的find功能。

于 2013-08-22T09:01:46.290 回答
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 算法(同样未经测试)

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 ;-)

*约斯特

于 2013-08-22T09:58:06.950 回答
0
cout<<myString[0];
for(int i=0;i<(myString.size-1);i++)
        { if(myString[i]==" ")
          {
           cout<< myString[i+1];
          {
        }

我没有检查它是否以这种方式编译,但您应该了解这种可能的简单解决方案。它仅适用于与您的示例类似的字符串。您应该像其他人已经建议的那样查看拆分方法。

于 2013-08-22T09:22:12.240 回答
0

按空格将其拆分为数组,使用 for 循环获取每个单词并将第一个字母添加到字符串中。

分裂

循环

在循环中获取第一个值只需执行“string_word[0]”

于 2013-08-22T09:22:16.510 回答