C++中,如何输入一个任意长度的字符串

我想定义一个动态字符指针来输入任意长度的字符串,
形如char *s=new char[];但这样长度超过一定数量就会出错。我该怎么写这样的程序呢。谢谢。
不好意思,一定要用char,一楼也太贪心了吧,这又不是很复杂,要是成功了加20分。

一个“很简单”的问题,折磨到头疼:

手动输入一个未知长度的字符串.

通常我们会申请一个足够大的内存空间,来保证不超出存储范围:

char* input=new char[100];

cin>>input;

此时申请到一个长度为100的字符数组并输入。

如果不想申请固定大小的空间,本人写了如下的程序:

char* input=new char(); //圆括号中是初始化参数

cin>>input;

int
main(int argc, char** argv)
{
int strLen = 5;
char ch;
char* str =
(char*)malloc(sizeof(char*) * strLen);
int count = 0;
printf("Please input
a string: ");
do
{
ch = getchar();
count++;
if (count >=
strLen)
{
str = (char*)realloc(str, sizeof(char*) *
(++strLen));
}
str[count-1] = ch;
} while (ch != '\n');
str[count] =
'\0';
puts(str);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-24
C++用 string 库。

#include <iostream>
#include <string>
using namespace std;

void main()
{
string str;
cin>>str; //随便你多长
cout<<str<<endl;
}

如果真要用char *实现可以再联系本回答被提问者采纳
第2个回答  2009-03-21
这个在C++里面用char 就是这样,必须得定义最大的长度数,根据我们使用的习惯,我们一般可以估计这个长度大小,比如姓名,我们可以定义char str[20].

但也可以自己写字符类去实现,动态分配!
第3个回答  2019-11-11
C++用
string
库。
#include
<iostream>
#include
<string>
using
namespace
std;
void
main()
{
string
str;
cin>>str;
//随便你多长
cout<<str<<endl;
}
如果真要用char
*实现可以再联系
第4个回答  2009-03-21
用链表嘛,如果是char的话任意长度有点困难,我不是高手,等高手来吧
相似回答