2017-12-05 9 views
1

스택 오버플로 및 웹에서 검색해도 내 질문에 대한 답을 찾지 못하는 것 같습니다.문자열의 일부를 double C++로 바꾸는 방법

당신은 어떻게 변수

예와 문자열의 일부를 교체하는 : I 변수 '숫자'이 문자열의 끝에 "# N"을 대체합니다.

첫 번째 시도 :

string firstline= "will find the answer in Chapter #N."; 
firstline.replace(firstline.begin(),firstline,end(),"#N",number); 

는 당신이 변수로 사람들을 통과하는 것을 허용하지 않는 기능을 대체 밝혀졌습니다.

두 번째 시도 :

내가 다른 문자열로 문자열의 일부를 변경 유튜브 튜토리얼을 발견했다.

세 번째 매개 변수가 두 배로 변경되었지만 아직 그 중 어디에서든 가져올 수 없습니다.

정답을 얻으려면 도움을 주시면 감사하겠습니다.

편집 : @sneha 그러나 내가 성공적으로 변경할 수 없습니다 해요, 나는 그 제안을했고, 내 코드는 이제 컴파일 할 수 있습니다 to_string()

를 사용하여 문자열로 변수를 변경 제안을했다 끈. 출력은

std::to_string(c1) 

이 그 다음으로 문자열을 대체 사용하여 문자열 "will find the answer in Chapter #N."

int main() 
{ 
double number =20; 
char str[] = "will find the answer in Chapter #N." 
cout<< replace_all(str, "we", to_string(number)); 
return 0; 
} 

string replace_all(string str, const string &from, const string &to) 
{ 
int pos=0; 
int flen= from.length(); 
int tlen = to.length(); 
while((pos= str.find(from,pos)) != -1) 
{ 
    str.replace(pos,flen,to); 
    pos += tlen; 
} 
return str; 
} 
+0

코드에'# N '이 하나 있습니까? 문자열에서 위치가 고정되어 있습니까? – abdullah

+0

두 단계 과정입니다. 숫자를 문자열로 변환 한 다음 문자열을 대체하십시오. –

+0

숫자 변수를 double에서 string으로 변환 한 다음 replace 함수를 사용하십시오. – kishore

답변

0
#include <iostream> 
#include <string> 
using namespace std; 
int main(int argc, char *argv[]) 
{ 
    string firstline= "will find the answer in Chapter #N."; 
    if(firstline.find("#N") != string::npos) 
     firstline.replace(firstline.find("#N"), string("#N").size(), to_string(5)); 
    cout<<firstline<<endl; 
    // will find the answer in Chapter 5. 
    return 0; 
} 
0
#include <iostream> 
#include <string> 
using namespace std; 

void Replace(string& s, double v) { 
    auto it = s.find("#N"); 
    if (it != string::npos) s.replace(it, 2, to_string(v)); 
} 

int main() { 
    string firstline = "will find the answer in Chapter #N."; 
    Replace(firstline, 12.35); 
    cout << firstline << endl; 
    return 0; 
} 
+0

그렇습니다. 12.35를 number라는 변수로 바꾸려면 어떻게할까요? 나는 그것을 작동시킬 수 없다. –

+0

당신은'double num = 12.35; Replace (firstline, num)'? 그렇다면 그 문제는 무엇입니까? – abdullah

+0

네, 그렇게하고 싶습니다. Replace (firstline, num) 그러나 프로그램을 실행할 때 여전히 "Chapter #N에서 대답을 찾을 수 있습니다." –

1

변경 이중 변수 여전히

편집 :

,
string replace_all(string str, const string &from, const string &to) { 
int flen= from.length(); 
auto val = str.find("#N"); 
if (val != string::npos) str.replace(val, flen, to); 
return str; 
} 

여기서 npos는 위치 문자열을 찾을 수 없다는 것을 의미합니다. 희망이 도움이됩니다.

+0

내 코드를 컴파일 할 수 있도록 제안 해 주셔서 감사합니다.하지만 문자열을 출력 할 때 그대로 유지됩니다. –

+0

replace_all 함수에서 "#N"이 있는지 여부를 확인하고 문자열이 있으면 문자열을 바꾸십시오. 업데이트 된 코드를 참조하십시오. – Sneha