我们如何将std :: string和 null终止字符数组分成两半,使两者具有相同的长度?
请为此建议一种有效的方法。您可以假设原始字符串/数组的长度始终为偶数。
有效地,我的意思是在两种情况下使用较少的字节数,因为使用循环和缓冲区的东西不是我想要的。
答案 0 :(得分:3)
std::string s = "string_split_example";
std::string half = s.substr(0, s.length()/2);
std::string otherHalf = s.substr(s.length()/2);
cout << s.length() << " : " << s << endl;
cout << half.length() << " : " << half << endl;
cout << otherHalf .length() << " : " << otherHalf << endl;
输出:
20 : string_split_example
10 : string_spl
10 : it_example
答案 1 :(得分:3)
你已经收到了一个C ++答案,但这是一个C答案:
int len = strlen(strA);
char *strB = malloc(len/2+1);
strncpy(strB, strA+len/2, len/2+1);
strA[len/2] = '\0';
显然,这使用malloc()
为第二个字符串分配内存,在某些时候你需要free()
。