2013-05-28 50 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; 
} 

这显示出一些奇怪的事情在输出,而“COUT(荷兰国际集团)”,“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.然后逐个字符地读取,直到遇见分隔符。如果一个字符可用,但内存不足,则应增加'size'并为字符串重新分配内存。 – soon

+0

我想我应该解释我的问题。我必须从用户,一个字符串,一个字符指针,以及该用户的字符串的大小,并只显示它的输入。 – Jamil