2017-12-22 20 views
0

저는 사용자가 문장을 입력 한 후에 쉼표를 공백으로 바꾸는 함수와 포인터를 사용하는 프로그램에서 작업하고 있습니다.초기화는 const char [3]에서 std :: string으로 변환 할 수 없습니다.

그러나 프로그램을 실행할 때 위의 오류와 다른 오류가 발생합니다.

"C++ 유형의 값은"const를 숯불 * 표준 : : 문자열 * "" "유형의 개체를 초기화 할 수 없습니다"

이 프로그램에 문제가 여기에 누군가가 나에게 줄 수 있는지 궁금 올바른 방향으로 움직여야합니까?

감사합니다.

을 Heres 코드 : 당신은 당신의 main()에 문자열 포인터를 만들 필요가 없습니다

#include "stdafx.h" 
#include <iostream> 
#include <string> 
#include <stdio.h> 
using namespace std; 




void comma2blank(string* pString1); 
int main() 

{ 

string* String1 = " " ; 

    cout << "Tell me why you like programming" << endl; 
    getline(cin, *String1); 

    comma2blank(String1); 
    cout << " String 1 without comma is: " << *String1 << endl; 

    delete String1; 
    system("pause"); 

}; 


void comma2blank(string* pString1) 
{ 

pString1->replace(pString1->find(','), 1, 1, ' '); 
pString1->replace(pString1->find(','), 1, 1, ' '); 



}; 

답변

0

. 전체 문자열 객체가 필요하며 다음과 같이 함수에 주소 (포인터)를 전달할 수 있습니다.

int main() 
{ 
    string String1; // NOT a pointer! 

    cout << "Tell me why you like programming" << endl; 
    getline(cin, String1); 

    comma2blank(&String1); // NOTE: pass by pointer using & (address of) 
    cout << " String 1 without comma is: " << String1 << endl; 

    // no need to delete anything here 

    system("pause");  
}; 
+0

축복이 있으시다면 정말 도움이됩니다. 나는 초보자 용 질문에 대해 매우 유감스럽게 생각한다. 다시 한 번 감사드립니다! – Conrad