#include <cstring>
#include <iostream>
#include <string>
void TransformString(const char *in_c_string, char *out_c_string) {
size_t length = strlen(in_c_string);
for (size_t i = 0; i < length; ++i)
out_c_string[i] = '*';
out_c_string[length] = 'a';
out_c_string[length+1] = 'b';
out_c_string[length+2] = 'c';
out_c_string[length+3] = '\0';
}
std::string TransformString(const std::string &in_string) {
std::string out;
out.resize(100);
TransformString(in_string.c_str(), &out[0]);
out.resize(strlen(&out[0]));
// IIRC there are some C++11 rule that allow 'out' to be moved here (if it isn't RVO'd anyway)
return out;
}
int main() {
std::string string_out = TransformString("hello world");
char charstar_out[100];
TransformString("hello world", charstar_out);
std::cout << string_out << "\n";
std::cout << charstar_out << "\n";
return 0;
}
I2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KCnZvaWQgVHJhbnNmb3JtU3RyaW5nKGNvbnN0IGNoYXIgKmluX2Nfc3RyaW5nLCBjaGFyICpvdXRfY19zdHJpbmcpIHsKCXNpemVfdCBsZW5ndGggPSBzdHJsZW4oaW5fY19zdHJpbmcpOwoJCglmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQoJCW91dF9jX3N0cmluZ1tpXSA9ICcqJzsKCQkKCW91dF9jX3N0cmluZ1tsZW5ndGhdID0gJ2EnOwoJb3V0X2Nfc3RyaW5nW2xlbmd0aCsxXSA9ICdiJzsKCW91dF9jX3N0cmluZ1tsZW5ndGgrMl0gPSAnYyc7CglvdXRfY19zdHJpbmdbbGVuZ3RoKzNdID0gJ1wwJzsKfQoKc3RkOjpzdHJpbmcgVHJhbnNmb3JtU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZpbl9zdHJpbmcpIHsKCXN0ZDo6c3RyaW5nIG91dDsKCW91dC5yZXNpemUoMTAwKTsKCQoJVHJhbnNmb3JtU3RyaW5nKGluX3N0cmluZy5jX3N0cigpLCAmb3V0WzBdKTsKCQoJb3V0LnJlc2l6ZShzdHJsZW4oJm91dFswXSkpOwoJCiAgICAvLyBJSVJDIHRoZXJlIGFyZSBzb21lIEMrKzExIHJ1bGUgdGhhdCBhbGxvdyAnb3V0JyB0byBiZSBtb3ZlZCBoZXJlIChpZiBpdCBpc24ndCBSVk8nZCBhbnl3YXkpCglyZXR1cm4gb3V0Owp9CgppbnQgbWFpbigpIHsKCXN0ZDo6c3RyaW5nIHN0cmluZ19vdXQgPSBUcmFuc2Zvcm1TdHJpbmcoImhlbGxvIHdvcmxkIik7CgkKCWNoYXIgY2hhcnN0YXJfb3V0WzEwMF07CglUcmFuc2Zvcm1TdHJpbmcoImhlbGxvIHdvcmxkIiwgY2hhcnN0YXJfb3V0KTsKCQoJc3RkOjpjb3V0IDw8IHN0cmluZ19vdXQgPDwgIlxuIjsKCXN0ZDo6Y291dCA8PCBjaGFyc3Rhcl9vdXQgPDwgIlxuIjsKCQoJcmV0dXJuIDA7Cn0=