gpt4 book ai didi

c++ - Ho 得到一个字符串,直到一个字符的最后一次出现

转载 作者:行者123 更新时间:2023-12-01 14:20:09 26 4
gpt4 key购买 nike

编辑 1

忘了说字符串要取自cin

我有一个字符串,如“嗨;我的;;名字是安德里亚;我喜欢 C++”。我想创建一个用该字符串初始化的字符串流,并获取最后一个 ; 之前的所有内容。

这是我试过的:

    string ex("Hi; my;; name is Andrea;; and I like C++"), text, final_text;
stringstream loop_stream(ex);
int findComma = loop_stream.str().find(';');
do {
getline(loop_stream, text, ';');
loop_stream.ignore(1);
final_text += text;
loop_stream << loop_stream.rdbuf();
findComma = loop_stream.str().find(';');
while (findComma == 1) {
loop_stream.ignore(1);
}
findComma = loop_stream.str().find(';');
}
while (findComma != string::npos);

cout << "-" << final_text << "-" << endl;

但它根本不起作用...我希望输出为:

-Hi; my;; name is Andrea-

最佳答案

这是另一个使用 find_last_of 的解决方案:

#include <string>
#include <iostream>

int main()
{
std:: string test = "Hi; my;; name is Andrea; and I like C++";
auto pos = test.find_last_of(";");
if ( pos != std::string::npos)
std::cout << test.substr(0, pos);
}

输出:

Hi; my;; name is Andrea

使用函数:

#include <string>
#include <iostream>

std::string parseString(const std::string& s)
{
auto pos = s.find_last_of(";");
if ( pos != std::string::npos)
return s.substr(0, pos);
return s;
}

int main()
{
std::cin >> test; // assume the string will be inputed
std::cout << parseString(test);
}

关于c++ - Ho 得到一个字符串,直到一个字符的最后一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62738757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com