檢索字符串流的最后一個元素的最簡單方法是什么?

我正在寫一個Book類,作為我正在讀的C++書的練習。我想存儲一位作者的姓氏,以便對所有書籍進行排序。

因此,假設作者的名字是:“阿爾伯特·艾因·斯坦”

然后只應將姓氏“Stein”分開并存儲。全名存儲在一個字符串中:std::string full_name = "Albert Ein Stein"

我認為將全名轉換為stringstream并以某種方式只檢索緩沖區的最后一個元素將是一個很好的解決方案。像這樣的東西:

void get_last_name (const std::string& full_name)
{
    std::stringstream stream(full_name);
    auto it = stream.end() - 1;
    std::string last_name = *it;
}

但這是無效的語法。只重定時字符串緩沖區的最后一個元素的簡單方法是什么?

? 最佳回答:

我想你不明白流是用來做什么的。

您已經有一個std::string,只需使用它的接口:rfindsubstr

std::string get_last_name(const std::string& full_name)
{
    auto last_word_pos = full_name.rfind(' ') + 1;
    return full_name.substr(last_word_pos);
}

Demo

這假設姓氏總是在最后一個空格之后,并且它本身不包含空格。還要注意,字符串的“最后一個元素”只是一個字符,而不是一個單詞。

主站蜘蛛池模板: 国产精品va无码一区二区| 一区二区三区日韩| 伊人久久精品一区二区三区| 综合人妻久久一区二区精品| 日韩人妻无码一区二区三区综合部| 亚洲福利视频一区二区| 精品一区二区久久| 亚洲一区二区三区四区视频| 无码日韩精品一区二区免费| 精品一区二区三区水蜜桃| 国产日韩高清一区二区三区| 国产成人无码一区二区三区在线| 久久精品一区二区三区日韩| 国产经典一区二区三区蜜芽| 在线|一区二区三区| 日韩人妻无码一区二区三区| 日韩一区二区在线视频| 香蕉久久ac一区二区三区| 一区二区三区视频在线播放| 亚洲国产精品一区二区第一页| 伊人色综合网一区二区三区| 相泽亚洲一区中文字幕| 精品深夜AV无码一区二区老年 | 国产精品亚洲综合一区在线观看 | 精品少妇一区二区三区在线| 无码人妻AⅤ一区二区三区 | 一区二区三区在线观看视频| 无码精品人妻一区二区三区中| 中文字幕日韩一区二区不卡| 国产福利电影一区二区三区久久老子无码午夜伦不 | 99精品久久精品一区二区| 99久久人妻精品免费一区| 国产精品成人一区无码| 夜色福利一区二区三区| 国产嫖妓一区二区三区无码| 91福利一区二区| 国产AⅤ精品一区二区三区久久| 99精品国产一区二区三区2021| 精品成人一区二区三区四区| 日韩一区二区a片免费观看| 亚洲av无码一区二区乱子伦as|