2017-12-28 52 views
-2

私は、関数replacef(char型のmは)(charとして初期化)の数で、文字A/Aを交換したいです。しかし、forループで関数を呼び出すと、quota.marksを除いて "Alabama"などと書くと、プログラムは文字列をそのまま返します。この機能が正しく動作するように、どのように文字を渡すことができますか?文字列のcharをC++の関数に渡しますか?私のプログラムで

#include <iostream> 
#include <string> 
using namespace std; 
string n; 
void replacef(char m) 
{ 
    switch (m) 
    { 
    case 'A': 
    case 'a': 
    m='1'; 
    } 
} 
int main() 
{ 
    cin>>n; 
    for(int i=0; i<n.length(); i++) 
    { 
     replacef(n[i]);//Replace the current char in the string 
    } 
    cout<<n<<endl; 
} 
+0

S/'無効replacef(char型のM)'/'無効replacef(CHAR&Mコメント) ' – user0042

答えて

2

パラメータを参照渡しで渡す必要があります。 void replacef(char m)void replacef(char& m)と交換してください。

+0

ありがとう! Y.Ivanov @ –

+1

[誰かが私の質問に答えるとき、私は何をすべきか?]を参照してください(https://stackoverflow.com/help/someone-answers)。 – Ron

1

あなた置き換える関数は、参照によって文字を受けなければなりません。

void replacef(char& c){ ... 

私はあなたにも、STDを見ている必要があります::あなたが必要なものだけない機能を置き換えると思います。 http://en.cppreference.com/w/cpp/algorithm/replace

M2cの

1

あなたがこれを行うために参照やポインタを使用する必要があります。ここで

はそれを行うためのコードである: -

#include <iostream> 
#include <string> 
using namespace std; 
string n; 
void replacef(char &m) 
{ 
    switch (m) 
    { 
    case 'A': 
    case 'a': 
    m='n';//you can choose any character to replace in place of 'm' 
    } 
} 
int main() 
{ 
    cin>>n; 
    for(int i=0; i<n.length(); i++) 
    { 
     replacef(n[i]);//Replace the current char in the string 
    } 
    cout<<n<<endl; 
} 

あなたはまだ任意のクエリを持っているならば、

関連する問題