#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;
}