Я пишу функцию, которая читает строку за строкой от cin
и возвращает, когда видит ;
символ.Чтение строки в C++ до EOF
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
int read_cmd(char *cmd)
{
cout << "Please enter a string: \n";
cmd[0]='\0';
while(1){
char currentLine[10000];
currentLine[0]='\0';
cin.getline(currentLine,10000);
if (strcmp(currentLine,";")==0){
break;
}
strcat(cmd, "\n");
strcat(cmd, currentLine);
}
return 0;
}
int main(){
char cmd[1000];
while (1){
read_cmd(cmd);
cout<< cmd << endl;
}
}
Затем я проверил его, используя текст, переданный из другого файла через трубу. ./read_cmd < test_file
содержимое test_file:
line 1
line 2
;
Это выводит результаты только штраф, однако он дает мне ошибку сегментации в конце. Есть ли способ для cin
, чтобы проверить, подходит ли он к EOF и завершается?
Вы прочитали страницу руководства для 'getline'? – lurker
Что-то вроде 'while (getline (cin, line))' должно преуспеть. –