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