我正在寫一個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
,只需使用它的接口:rfind
和substr
。Demo
這假設姓氏總是在最后一個空格之后,并且它本身不包含空格。還要注意,字符串的“最后一個元素”只是一個字符,而不是一個單詞。