2017-12-05 10 views
1

スタックオーバーフローとWebで検索していて、私の質問に対する答えが見つからないようです。文字列の一部をダブルC++に置き換える方法

は、変数

例で、文字列の一部を置き換えるにはどうすればよい:私は、変数と、この文字列の末尾に「#N」「数」を交換したいです。

最初の試行:

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

置き換える機能を使用して、変数としてそれらを渡すことはできませんが判明しました。

第二の試み:

私は別の文字列と文字列の一部を変更ユーチューブチュートリアルを発見しました。

第3パラメータを2倍にするためにいくつかの変更を加えましたが、それでもどこでも取得できません。

私に正しい答えを得るための助けがあれば幸いです。

EDIT: @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 'が1つありますか?それは文字列の位置が固定されていますか? – abdullah

+0

これは2段階のプロセスです。数字を文字列に変換し、文字列の置換を行います。 –

+0

number変数を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;置換(最初の行、数字) '?その後、問題は何ですか? – abdullah

+0

はい、それは私がしたいことです。 Replace(firstline、num)しかし、プログラムを実行すると、私はまだ "Chapter#N"の答えが見つかるでしょう。 –

1

変更ダブル変数まだある

EDIT:

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

関連する問題