2012-11-20 4 views
0

문자열에 정수를 추가하는 쉬운 방법이 있습니까?문자열에 추가하는 C++

for(int i=0;i<text.length();i++){ 
     for(int g=0;g<word.length();g++){ 
      if(text[i]==word[g]){ 
       kodas.append(g); 
      } 
     } 
    } 

나는 동일 배열의 인덱스를 얻을 필요가, 그리고 물론 인덱스는 정수 타입 :

이 같은 루프를 가지고있다. 하지만 이렇게하면 오류가 발생합니다.

invalid conversion from ‘int’ to ‘const char*’ [-fpermissive]| 

해결 방법이 있습니까?

+1

무엇이 달성할까요? 10 진수의 의미없는 연결로 끝날 것입니다 ... –

+1

기차에 여객을 추가하는 것이 유용하지 않은 것처럼 문자열에 정수를 추가하는 것은 유용하지 않습니다. 원하는 것은 문자열의 끝에 정수를 쓰는 것입니다. 이것은 당신이'string'보다는'stringstream'을 사용하기를 원한다는 것을 나타냅니다. – leftaroundabout

답변

6

사용 이제 stringstream을 원하는 경우도 작동합니다 #include <sstream>

#include <sstream> 
using namespace std; 
string oldString = "old"; 
int toAppend = 5; 
stringstream ss(toAppend); 
string newString = oldString + ss.str(); 

newString이 될 것입니다 "old5"

+2

'stringstream ss (oldString);'을 추천하고'ss.str()'만이 결과입니다. –

1

.

당신은, 예를 들어 수 있습니다

  • 만들 문자열로 정수를 변환 itoa 기능을 사용하여 kodasostringstreamcout에 당신처럼 그것으로 "쓰기"kodas << g
1

가장 쉬운 방법은 다음과 같습니다.

if (kodas.empty()) { kodas += ' '; } 
kodas += std::to_string(g); 

C++ 11이 없으면 대신 boost::lexical_cast<std::string>(g)을 사용하십시오.

kodas += static_cast<std::ostringstream&>(std::ostringstream() << g).str(); 
+0

나는이 static_cast 트릭을 좋아한다! 왜 그렇게 나쁜가요? – d33tah

+1

@ d33tah : 나쁘지 않은데 그냥 끔찍한 것 같아. –

0

는 itoa()가 자사의 알파 기능으로, 당신을 도움이 될 것입니다

실패 다,이 같은 끔찍한 일을 할 수 있습니다. 의 sprintf 나 vsprintf는 표준 : : 문자열을 사용하여 작업하는 경우

+2

'vsnprintf'보다는'vsprintf' 제안이 경계선 범죄입니다! 당신은 봇넷입니까? –

0

숫자로 서식을 여러 가지 방법이 있습니다 C++의 문자열로 sprintf(), boost:lexical_cast() 등이 있습니다. 좋은 비교 및 ​​추가 제안 사항은 The String Formatters of Manor Farm을 참조하십시오. 또한 C++ 11은 std::to_string입니다. 컴파일러에 아직 컴파일러가 있거나 없을 수도 있습니다.

관련 문제