2017-12-28 45 views
-2

내 프로그램에서 replacef (char m) 함수를 사용하여 문자 A/a를 (char로 초기화 된) 숫자로 바꿉니다. 그러나 for 루프에서 함수를 호출하면 "alabama"(quot.marks 제외)를 작성하면 프로그램이 문자열을 변경하지 않고 반환합니다. 이 기능이 제대로 작동하도록 어떻게 문자를 전달할 수 있습니까?C++의 함수에 문자열의 char 전달?

#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 (문자 분)를 언급'/'무효 replacef (문자 & M)' – user0042

답변

2

매개 변수를 참조로 전달해야합니다. void replacef(char m)void replacef(char& m)으로 바꿉니다.

+0

감사합니다. –

+1

@ Y.Ivanov [누군가 내 질문에 대답하면 어떻게해야합니까?] (https://stackoverflow.com/help/someone-answers)를 참조하십시오. – Ron

1

바꾸기 함수는 참조로 char을 받아야합니다.

void replacef(char& c){ ... 

나는 당신이 필요한 것을 수행하는 std :: replace 함수를 살펴 봐야한다고 생각한다. 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; 
} 

다음