我在Linux中遇到了管道問題。看起來像管道後空間字符丟失。從爲什麼Linux中的管道中的空間會丟失?
echo "ab cd" | ./checker
shell命令運行下面的代碼C++
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){
char s[] = "ab cd", c;
int n = strlen(s);
for(int i = 0; i<n && (cin >> c); i++)
if(s[i] != c){
printf("wrong at %d : '%c' != '%c' \n", i, s[i], c);
break;
}
return 0;
}
給
wrong at 2 : ' ' != 'c'
這是正常的行爲呢?如何避免丟失管道中的字符?
由於CIN消耗空白。 http://stackoverflow.com/questions/11462021/issue-with-cin-when-spaces-are-inputted-using-string-class – kfsone
@kfsone - 'cin'不消耗空白;流提取器('operator >>'),無論數據來自何種流。 –
@PeteBecker對我而言,不好的措辭。 – kfsone