I got a chars array like
char ch[] = "This is a char array";
我想从索引n到索引j创建一个新的字符串,例如:
string str = stringFromChar(ch, 0, 5); //str = 'This'
std::string
。std::string str(std::begin(ch), std::next(std::begin(ch), 5));
在更一般的情况下,您可以使用std::next
来同时定义起始迭代器和结束迭代器来从数组的任意部分创建一个字符串。
我倾向于在适用时使用C ++标准库,但知道您也可以使用指针算术运算实现相同的功能。
std::string str(ch, ch+5);
std::next
和std::advance
用于处理通过可能使用非连续内存(例如std::list
等)的容器进行推进的情况。 - Cory Kramer您可以直接编写
string str(ch, ch + 5); //str = 'This'
string str(ch + i, ch + j); //str = 'This'
当i < j时:
如果第一个索引等于0,则也可以这样写:
string str(ch, n );
其中n是你将要放在创建对象中的字符数。例如:
string str( ch, 4 ); //str = 'This'
或者
string str( ch + i, j - i ); //str = 'This'
你可以直接使用 begin 和 end 函数...
#include<iostream>
#include<string>
int main() {
char ch[] = "This is a char array";
std::string str(std::begin(ch), std::end(ch));
std::cout << str << std::endl;
// system("pause");
return 0;
}
只需使用迭代器构造函数(同时,char* 是有效的输入迭代器)
std::string str(ch, ch + 5);
char[] ch
这不是有效的语法。可能在C#中可以,但在C++中不行。 - David Haim