首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始算法c++11

初始算法c++11
EN

Stack Overflow用户
提问于 2020-05-06 15:01:47
回答 1查看 63关注 0票数 0

我正在写一个代码打印一个字符串的首字母。但我有一个问题,在一个例子中,这些名字有不止一个空格characters.And,我想出了一个想法,删除那些不需要的空格字符,只留下一个空格,但我对字符串还没有信心,谁能告诉我该怎么做吗?

代码语言:javascript
复制
#include <iostream>
#include <string>
#include <cctype>

std::string initials(const std::string &w )
{
    char space = ' ';
    std::string a;
    a.push_back(w[0]);
    for (int i = 0; i < w.size(); ++i)
    {
        if (w[i] == space )
        {
            a.push_back(w[i+1]);


        }

    }
    return a;
}

int main()
{
    std::cout<<  initials(std::string("Julian     Rodriguez        Antonio "))<<std::endl;

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 15:15:46

如果最后一个字符是空格或非空格,则可以将这些信息保存在内存中。

代码语言:javascript
复制
#include <iostream>
#include <string>
#include <cctype>

std::string initials(const std::string &w) {
    char space = ' ';
    std::string a;
    int mode = 0;
    for (int i = 0; i < w.size(); ++i) {
        if (w[i] == space) {
            mode = 0;
        } else {
            if (mode == 0) a.push_back(w[i]);
            mode = 1;
        }
    }
    return a;
}

int main()
{
    std::cout<<  initials(std::string(" Julian     Rodriguez        Antonio "))<<std::endl;
}

编辑:感谢Pete的建议,这里有一个更清晰的实现。

代码语言:javascript
复制
std::string initials(const std::string &w) {
    char space = ' ';
    std::string a;
    bool skipping_spaces = true;
    for (int i = 0; i < w.size(); ++i) {
        if (w[i] == space) {
            skipping_spaces = true;
        } else {
            if (skipping_spaces) a.push_back(w[i]);
            skipping_spaces = false;
        }
    }
    return a;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61638512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档