C/ c++读取未知长度的char*输入

C/C++ read char* input of unknown length

本文关键字:char 输入 c++ 读取 未知      更新时间:2023-10-16

我想知道是否有可能读取未知大小的字符串,直到空格或直到到达换行符。我在c++中是这样做的:

char * dynStr;
char buffer[20];
cin >> buffer;
dynStr = new char[strlen(buffer) +1];
strcpy(dynStr, buffer);

但问题是,如果输入的输入大于20呢?所以我认为应该是这样的:

do
{
 cin.get ( buffer, 20, ' '); //im not sure this is the right approach
 strcpy(.....); // if is not  a first iteration 
 //add the new buffer to the  end of dyn str..
} while( ! read ' ' or 'n' ) <--- this is what I have problem doing

我知道在c++中我可以使用std::string,但我想知道如何做这件事,所以如果你有任何想法,告诉我:)

get()和其他几个方法,只能读取直到一个特定的字符被读取。您希望一直读到接收到换行符或空格为止。

对于这种简单的情况,最好使用

cin.get();

每次读取一个字符,将其附加到字符串后,检查每个字符是否读取空格或换行符。根据您的具体情况,您可能还需要使用peek();

这可能不是很有效,但对于从流中读取数据的简单练习来说,这将是一个很好的起点。在工作之后,您可以阅读read()方法的文档,并实现一个更复杂的算法,用于从流中读取和缓冲大块文本,然后手动搜索每个读取缓冲区以查找下一个空格或换行符,如果找到,则将其余文本保存在缓冲区中以便稍后处理。

从一次读取一个字符的简单初始逻辑开始,然后发展到更复杂的方法。