다른 프리미티브를 사용하여 문자열을 추가하는 솔루션을 찾고 있었고 stringstream이 가장 쉬운 솔루션이라는 것을 알았습니다. 그러나 프로세스를 간소화하여 사용을 쉽게하기위한 기능을 만들고 싶었습니다. 대체 연결 방법을 제안 할 경우, 최종 결과가 char *가되어야합니다. 내가 가진 루프 (I) 사용 :C++ 함수의 매개 변수로 stringstream을 사용하려면 어떻게해야합니까?
std::stringstream ss;
ss << "test" << i;
char* name = new char[ss.str().size() + 1];//allocate
strcpy(name, ss.str().c_str());//copy and put (char*)c_str in name
그래서 출력이 뭔가 링크 test1test2test3입니다 ... 이것은 내가 소집 할 수있는 가장 합리적인 해결책이었다. 사용하기 쉽도록 기능에 넣으려고했지만 문제가 발생했습니다. 내가 좋아하는 뭔가를하고 싶어 :
char* string_to_pointer(char* dest, std::stringstream* _ss) {
char* result = new char[_ss->str().size() + 1];
strcpy(result, _ss->str().c_str());
return result;
}
나는 다음과 같이 할 수있다 :
std::stringstream ss;
ss << "test" << i;
char* name = string_to_pointer(name, &ss);
전 C 꽤 새로운 해요 ++이 구문이 올바른 사용 것 같아,하지만 난 런타임에 실행하고를 부스트로 이어지지 않고 사용하기 쉬운 기능으로이 문제를 해결하는 방법에 대한 솔루션을 환영합니다.
사용해 보셨습니까? 편집 : 런타임 문제는 무엇입니까? – lightandlight
왜 "string_to_pointer"변환을 수행해야합니까? 그리고 최종 결과가 'char *'가되기를 원하십니까? 그것이 마지막이라면 더 이상 수정할 필요가 없으므로 const char *일까요? 그렇게하면 끝까지 문자열 스트링을 계속 사용할 수 있습니다. – mockinterface
string_to_pointer가 이상합니다 : 첫 번째 매개 변수를 사용하지 않습니다. – laune