gpt4 book ai didi

c++ - 必须在 C++ 中将 c_str 用于 strchr?

转载 作者:行者123 更新时间:2023-11-30 02:18:50 25 4
gpt4 key购买 nike

我需要在 C++ 中解析 std::string std::string s = "my_prefix,my_body,my_suffix";

我只需要前缀、后缀。在 C 中(使用类似的 char* 作为输入)我会做类似的事情:

char *s = "my_prefix,my_body,my_suffix";
size_t N = strlen("my_prefix"); // This is actually a fixed length in my real case
char* suffix = 1 + strrchr(s, ',');
char* prefix[128];
snprintf(prefix, N+1, "%s", s);
printf("prefix = %s\n" "suffix = %s\n", prefix, suffix);

我想在 C++ 中使用 strchr,但据我所知,implementation仅适用于 char*。我必须在我的字符串上使用 c_str() 还是有其他方法(例如 C++ 函数 [不是 boost 等等...我使用的是非常精简的 C++])?

编辑:

这是我在 C++ 中的尝试,这是一个好的选择吗?

std::string s = "my_prefix,my_body,my_suffix";
char delimiter = ',';
std::string pre = s.substr(0, s.find_first_of(delimiter));
std::string suf = s.substr(1 + s.find_last_of (delimiter));

std::cout << pre << std::endl;
std::cout << suf << std::endl;

最佳答案

您可以使用 std::string::find_first_of 而不是使用 strchr/std::string::find_last_ofstd::string::substrs 中获取前缀和后缀。

std::string s = "my_prefix,my_body,my_suffix";
std::string prefix = s.substr(0, s.find_first_of(","));
std::string suffix = s.substr(s.find_last_of(",") + 1);

关于c++ - 必须在 C++ 中将 c_str 用于 strchr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51768231/

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