C++ 如何通过前后搜索分隔符来读取字符数组

C++ 如何通过前后搜索分隔符来读取字符数组,c++,search,delimiter,C++,Search,Delimiter,我很好奇有没有一种快速的方法可以从一行的前后搜索特定的分隔符 范例 C:\main\programs\Calvin and Hobbes 我想把加尔文和霍布斯的部分存储在char[]中。我在想,如果可能的话,最简单的方法是从前到后搜索行中的\,然后捕获在该分隔符之后找到的所有内容。如果使用,则可以使用: 如果您使用了,那么您可以使用: 将字符数组转换为std::string。(或直接读入std::string) 研究std::string::find_last_of方法。还研究了反向迭代器 如

我很好奇有没有一种快速的方法可以从一行的前后搜索特定的分隔符

范例

C:\main\programs\Calvin and Hobbes
我想把加尔文和霍布斯的
部分存储在
char[]
中。我在想,如果可能的话,最简单的方法是从前到后搜索行中的
\
,然后捕获在该分隔符之后找到的所有内容。

如果使用,则可以使用:

如果您使用了,那么您可以使用:


将字符数组转换为
std::string
。(或直接读入
std::string

研究
std::string::find_last_of
方法。还研究了反向迭代器


如果必须使用C样式的字符数组,请阅读
str*()
函数

将字符数组转换为
std::string
。(或直接读入
std::string

研究
std::string::find_last_of
方法。还研究了反向迭代器

如果必须使用C样式的字符数组,请阅读
str*()
函数

使用
strrchr()
(与
strchr()
相反)

这里有一个用法
strrchr()
(与
strchr()
相反)


这里有一个

如果您有类似于
常量字符*s的内容
,您可以使用

您可以将
res
用作字符串,但它将与
s
共享存储空间。您不必将结果复制到新字符串中。如果字符在
s
中不存在,则需要处理该情况(检查是否为null),在这种情况下,在检查之前不会
+1

auto* res = strrchr(s, '\\');
if (res) {
    ++res;
} else {
    std::cerr << "\\ character not present in s\n";
}
auto*res=strrchr(s,“\\”);
如果(res){
++res;
}否则{

std::cerr如果您有类似于
const char*s
的内容,您可以使用

您可以将
res
用作字符串,但它将与
s
共享存储空间。您不必将结果复制到新字符串中。如果
s
中不存在该字符,则需要处理该情况(检查是否为null),在这种情况下,您在检查前不需要
+1

auto* res = strrchr(s, '\\');
if (res) {
    ++res;
} else {
    std::cerr << "\\ character not present in s\n";
}
auto*res=strrchr(s,“\\”);
如果(res){
++res;
}否则{

你不使用std::cerr有什么特别的原因吗?我的大学不允许使用字符串,只有字符数组所以你有办法!是什么阻止了你实现它?你不是在问问题!你不使用std::string有什么特别的原因吗?我的大学不允许使用字符串,只有字符数组所以你有办法!是什么阻止了你这么做?你不是在问问题!
auto* res = strrchr(s, '\\');
if (res) {
    ++res;
} else {
    std::cerr << "\\ character not present in s\n";
}