创建一个从前缀到C 中字符位置的新字符串
Create a new string from prefix up to character position in C++
如何找到字符串中字符的位置?前任。如果我输入" ABC*AB",我想创建一个使用" ABC"的新字符串。你能帮我解决我的问题吗?
c 标准字符串提供find
方法:
s.find(c)
,如果根本不存在字符,则将字符c
的第一个实例位置返回到字符串s
或std::string::npos
中。您也可以通过搜索的起始索引;即。
s.find(c, x0)
将返回字符c
的第一个索引,但从位置启动搜索x0
。
std::find
将迭代器返回到它所发现的第一个元素,其比较与您要寻找的内容(或第二个参数,如果找不到任何东西。)您可以使用迭代器构建std::string
。
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string s = "abc*ab";
std::string s2(s.begin(), std::find(s.begin(), s.end(), '*'));
std::cout << s2;
return 0;
}
如果您正在使用std::string
类型,那么通过使用std::find
算法,很容易找到字符的位置:
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
string first_string = "abc*ab";
string truncated_string = string( first_string.cbegin(), find( first_string.cbegin(), first_string.cend(), '*' ) );
cout << truncated_string << endl;
}
注意:如果在std::string
中多次找到角色,则find
算法将返回发生的位置。
详细说明现有答案,您可以使用string.find()
和string.substr()
:
#include <iostream>
#include <string>
int main() {
std::string s = "abc*ab";
size_t index = s.find("*");
if (index != std::string::npos) {
std::string prefix = s.substr(0, index);
std::cout << prefix << "n"; // => abc
}
}
相关文章:
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- C++指针数组到字符数组中的特定位置
- 计算在同一位置至少包含一个常用字符的不同字符串对
- 我如何知道字符串中字符相对于英文字母的位置值?
- 我正在尝试为字符打印一些相应的值,但条件总是转到其他位置
- 递增 'int i = 0' 以在初始化的字符数组的位置递增
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- 如何计算 3d 数组中的索引值在内存中的位置?如何计算字符**中的索引值在内存中的位置?
- 如何从输入字符串中提取特定位置的字符?
- 如何在 Clang AST 中的源位置之后找到字符的源位置?
- 从输入 1 查找输入 2 中字符的位置
- 为字符串中的每个字符(不是字符位置!)分配唯一的索引
- 提取字符后返回到文件中的特定位置
- 从文件对象的当前位置删除字符
- 访问字符阵列中不可用的内存位置(超出范围值)
- 使用指针在字符串中获取字符的位置
- 如何使用 antlr4 恢复特定行和字符位置的 ParserRuleContext
- 创建一个从前缀到C 中字符位置的新字符串
- c++字符串交换字符位置
- 从文本控件中检索字符位置的客户端区域坐标