-1

动态数组以让您存储字符串或任何数据类型而无需声明它的大小而闻名我的 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 不会在字符“*”上停止,因此当我按 Enter 时将设置限制。但如果我只想使用返回键,它将读取字符串的前 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 中的字符数或声明动态数组时进行操作。

4

2 回答 2

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

您永远不必担心 a 中的存储std::string,它可以为您解决所有问题。顺便说一句,new char;它不会创建一个chars 的动态数组,它只创建一个指向 one 的指针char。另请参阅getline

于 2013-10-12T09:29:07.810 回答
1

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

利用:

char* sentence=new char[100];

于 2013-10-12T09:29:15.000 回答