C/ c++读取未知长度的char*输入
C/C++ read char* input of unknown length
我想知道是否有可能读取未知大小的字符串,直到空格或直到到达换行符。我在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()
方法的文档,并实现一个更复杂的算法,用于从流中读取和缓冲大块文本,然后手动搜索每个读取缓冲区以查找下一个空格或换行符,如果找到,则将其余文本保存在缓冲区中以便稍后处理。
从一次读取一个字符的简单初始逻辑开始,然后发展到更复杂的方法。
相关文章:
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 为什么当我尝试将char输入到int时,文件指针会卡住
- 程序的执行在 C++ 中输入 char 变量后结束
- 如果用户输入的输入大于 char 数组,则 cin.getline 会跳过输入提醒
- 当我将 char 数组发送到输入参数为字符串的函数时会发生什么?
- C++用用户输入在循环中填充 char 数组:输入整个字符串时到底发生了什么?
- 如何使用CIN将输入整数值获取到char类型变量中
- 输入重定向读取整数和char C
- C 读取输入,直到线char数组的结束
- std::cin 无法将命令行中的用户输入传递给具有 char 类型的变量吗?
- 接受类型char的输入的问题
- 将用户输入从int []转换为char [] []
- 使用RegQueryValueEx将reg_sz作为输入并将其用作char数组
- 如何防止char输入影响int变量
- 如何避免int变量的char输入
- 为什么这段代码不会使 cin 崩溃?char 输入了一个整数变量 C++
- 单链表,基于 *char 输入的自排序
- 获取char输入,检查它是否有效,如果无效,清除整个输入
- C/ c++读取未知长度的char*输入