C++ 在c+中读取不知道其大小的输入+;

C++ 在c+中读取不知道其大小的输入+;,c++,input,infinite,C++,Input,Infinite,我还没有找到我的问题的好答案,所以我决定问我自己的问题 我需要使用我自己的函数以以下格式从控制台读取输入: RL b RLRL c RLLL 一般而言: (字符)(空格)(字符序列或空)(换行字符) 我想把它一个接一个地读入字符数组。我的意思是我想读一行,对数据做一些处理,然后读第二行,依此类推 问题是我不知道行数,也不知道如何停止。 检查它是否为新行字符(ASCII 10)不起作用,因为它位于每一行中 这是我的代码: #include <iostream> #include &l

我还没有找到我的问题的好答案,所以我决定问我自己的问题

我需要使用我自己的函数以以下格式从控制台读取输入:

RL

b RLRL

c RLLL

一般而言: (字符)(空格)(字符序列或空)(换行字符)

我想把它一个接一个地读入字符数组。我的意思是我想读一行,对数据做一些处理,然后读第二行,依此类推

问题是我不知道行数,也不知道如何停止。 检查它是否为新行字符(ASCII 10)不起作用,因为它位于每一行中

这是我的代码:

#include <iostream>
#include <cstdio>

using namespace std;

int input_size;
char c;
bool finish;

inline int read(char* v, char* arr) {
    int counter = 0;
    c = getchar();

    *v = c; //Pobranie wartości węzła
    input_size++;

    char* tmp = arr;
    c = getchar();
    c = getchar();
    while (c != 32 && c != 10) {
        input_size++;
        *tmp++ = c;
        c = getchar();
        counter++;
    }
    if(c == 10)
        finish = false;
    return counter;
}

void show(char* t, int c) {
    char* tmp = t;
    for(int i = 0; i < c; i++) {
        cout << *tmp;
        tmp++;
    }
    delete[] tmp;
}

int main()
{

    finish = true;
    char* a = new char[1];
    char* b = new char[64];

    while(finish) {
        int c = read(a, b);
        cout << "char: " << *a << endl;
        cout << "char sequence: ";
        show(b,c);
        cout << endl;
    }



    return 0;
}
#包括
#包括
使用名称空间std;
int输入大小;
字符c;
布尔整理;
内联整数读取(字符*v,字符*arr){
int计数器=0;
c=getchar();
*v=c;//Pobranie wartości węzła
输入_size++;
char*tmp=arr;
c=getchar();
c=getchar();
而(c!=32&&c!=10){
输入_size++;
*tmp++=c;
c=getchar();
计数器++;
}
如果(c==10)
完成=错误;
返回计数器;
}
无效显示(字符*t,整数c){
char*tmp=t;
对于(int i=0;i看一看的例子,特别是for循环。它一行一行地给出所有的行。我需要用getchar()来完成它还有我自己的函数。它在我的任务说明中。我也需要计算输入字符数,也许这就是为什么需要它。使用
getchar
实现你自己的
getline
然后?当你遇到换行符时停止。你能使用
std::string
吗?或者你也必须重新实现它吗?@AndyG这会很好,但是换行了字符表示数据的下一行和结尾,我不知道如何区分它?