已知动态数组允许您存储字符串或任何数据类型,而无需声明其大小 我用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中的字符数的情况下进行操作,也不要在声明动态数组时输入。
答案 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];