2013-05-28 1 views
0

먼저 사용자로부터 길이를 얻지 않고이 작업을 수행합니다. 여기에 있습니다 :"NEW"를 사용하여 문자 입력 및 주어진 출력 가져 오기

#include <iostream> 
using namespace std; 
int main() 
{ 
     char *str; 
    cout<<"Enter Characters:"; 
    str=new char[]; 
    cin>>str; 

    cout<<"\nstr="<<str; 
    system ("pause"); 
    return 0; 
} 

이제 사용자로부터 입력 길이를 가져 왔습니다. 여기에 그것은 :

#include <iostream> 

using namespace std; 
int main() 
{ 
     char *str; 
    int len; 

    cout<<"Enter Characters:"; 
    str=new char[]; 
    cin>>str; 

    cout<<"Enter length of your entered character:"; 
    cin>>len; 

    char *ptr=str; 
    ptr=new char[len]; 

    cout<<"\nptr="<<ptr; 
    system ("pause"); 
    return 0; 
} 

출력에 이상한 일이 있습니다. "출력"("보내다", "ptr"), 나는 무엇을 모르겠다! 이것이 잘못된 경우 어떻게 사용자로부터 입력을받을 수 있습니까? 첫 번째 프로그램을 편집하면이 줄 "str = new char [];까지 입력 할 수 없습니다." 실행됩니다. 길이는이 줄에서만 줄 수 있습니다. 길이는 문자열을 가져올 때까지만 지정할 수 있습니다.

+0

'str = new char [];'- 여기서 무엇을하려고합니까? – soon

+0

문자를 저장할 char를위한 공간을 만들었습니다.이 줄을 건너 뛰면 str을 직접 입력 할 수 없습니다. – Jamil

+0

어떤 컴파일러를 사용 했습니까? – soon

답변

0

당신은 몇 가지 실수를 가지고 있지만, 주요입니다

str = new char[]; 

이 유효한 C++ 구문이 아니다. 할당 된 메모리의 크기를 지정해야합니다. 당신이 모르는 경우에, 당신이 필요로하는 메모리의 양, 당신은 std::string을 사용해야합니다

#include <iostream> 
#include <string> 

int main() 
{ 
    std::string str; 
    std::cin >> str; 

    std::cout << "str = " << str << std::endl; 
    return 0; 
} 

또 다른 문제를 - 모든 new 에드 메모리 delete D해야한다.

+0

캐릭터 포인터로하고 싶습니다. – Jamil

+0

@ user2429013 : 좋아요, 당신은 초기의'size' 즉, 64를 할당해야합니다. 그런 다음 구분 기호를 만날 때까지 문자 단위로 문자를 읽으십시오. 문자를 사용할 수 있지만 메모리가 부족한 경우 '크기'를 늘리고 문자열에 대해 메모리를 다시 할당해야합니다. – soon

+0

나는 내 질문에 대해 설명해야한다고 생각한다. 나는 사용자, 문자열, 문자 포인터 및 사용자의 문자열 크기를 입력 받아 사용해야한다. – Jamil

관련 문제