我有一个像
这样的字符数组char ch[] = "This is a char array";
我希望从索引n到索引j创建一个新字符串,即
string str = stringFromChar(ch, 0, 5); //str = 'This'
答案 0 :(得分:6)
您可以使用带有两个迭代器的std::string
构造函数。
close
在更一般的情况下,您可以使用std::string str(std::begin(ch), std::next(std::begin(ch), 5));
作为开始和结束迭代器,从数组的任意切片创建一个字符串。
我更喜欢在适用的时候使用C ++标准库,但是知道你可以用指针算法做同样的事情。
std::next
答案 1 :(得分:2)
你可以写
string str(ch, ch + 5); //str = 'This'
这是一般表格看起来像
string str(ch + i, ch + j); //str = 'This'
其中i< Ĵ
如果第一个索引等于0,那么你也可以写
string str(ch, n );
其中n是您要在创建的对象中放置的字符数。例如
string str( ch, 4 ); //str = 'This'
或者如果第一个索引不等于0,那么你也可以写
string str( ch + i, j - i ); //str = 'This'
答案 2 :(得分:0)
只需使用带有迭代器的构造函数(另外,char *是一个有效的输入迭代器)
std::string str(ch, ch + 5);
答案 3 :(得分:0)
您可以使用开始和结束功能......
#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;
}