此问题在此处已有答案:
C++ equivalent of Python String Slice?(7个答案)
四年前关闭了。
有没有可能实现一个方法,通过它我可以做切片在C++使用:
操作符。
例如,我定义了一个C样式字符串,如下所示:
char my_name[10] {"InAFlash"};
我可以实现一个函数或重写任何内部方法来完成以下操作吗:
cout << my_name[1:5] << endl;
输出:nAFl
更新1:我尝试了如下字符串类型
#include <iostream>
#include <string>
using namespace std;
int main()
{
string my_name;
my_name = "Hello";
// strcpy(my_name[2,5],"PAD");
// my_name[2]='p';
cout << my_name[2:4];
return 0;
}
但是,出现以下错误
helloWorld.cpp: In function 'int main()':
helloWorld.cpp:10:22: error: expected ']' before ':' token
cout << my_name[2:4];
^
helloWorld.cpp:10:22: error: expected ';' before ':' token
3条答案
按热度按时间5sxhfpxr1#
如果您坚持使用C样式数组,
std::string_view
(C++17)可能是一种操作char[]
而无需复制内存的好方法:演示:http://coliru.stacked-crooked.com/a/fa3dbaf385fd53c5
对于
std::string
,需要一个副本:演示:http://coliru.stacked-crooked.com/a/a16112ac3ffcd8de
1cosmwyk2#
如果你想要一个字符串的副本,那么可以使用迭代器或
substr
:如果你想在不创建新字符串的情况下对它进行切片,那么
std::string_view
(C++17)是可行的方法:sh7euo9m3#
如果使用
std::string
(C++方式),则可以