c ++动态数组问题

时间:2013-10-12 09:27:14

标签: c++ arrays dynamic cstring

已知动态数组允许您存储字符串或任何数据类型,而无需声明其大小 我用c ++面临的问题如下:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char*sentence=new char;
cout<<"enter a sentence (end with *) : ";
cin.getline(sentence,'*');
cout<<"sentence : "<<sentence<<endl;
system("pause");
return 0;
}

cin.getline不会在字符'*'上停止,因此当我按回车键时将设置限制。 但如果我只想使用返回键,它将读取字符串的前9个字符:

 int main()
    {
        char*sentence=new char;
        cout<<"enter a sentence : ";
        cin.getline(sentence,'\n');
            cout<<"sentence : "<<sentence<<endl;
        system("pause");
        return 0;

    }

但只有在限制字符数时它才会起作用:

int main()
{
char*sentence=new char;
cout<<"enter a sentence : ";
cin.getline(sentence,100,'*');
system("pause");
return 0;
}

但是我想让用户输入一个句子而不限制如何在不设置cin.getline中的字符数的情况下进行操作,也不要在声明动态数组时输入。

2 个答案:

答案 0 :(得分:3)

std::string line;
std::getline(std::cin, line);

您永远不必担心std::string中的存储空间,它可以为您完成所有工作。 顺便说一句,new char;不会创建char s的动态数组,它会创建一个只指向char的指针。 另请参阅getline

答案 1 :(得分:1)

char* sentence=new char ;分配一个char

使用:

char* sentence=new char[100];