一般來說, cin遇到空格和回車都會忽略, 但昨天做一道ccf的試題, 要求是輸入一些數據, 這些數據長度不定, 而且不能輸入別的數據(比如特定的結束符或者ctrl+z), 這就要求輸入必須能識別兩個回車並自動結束…… 結果我沒做出來
嗯, 回來之後查了一下這個問題, 這個問題還是蠻簡單的, 一般來說, 你在cmd裏輸入的數據會保存到緩衝區, 然後遇到回車或者eof就會被cin讀入, cin又會忽略換行和空格, 所以, 打兩個空格停止, 需要一點特殊設置。
一下是代碼, 改程序每行輸入兩個數字, 然後回車, 下一行繼續輸入兩個數字, 或者連續輸入兩個回車, 這樣結束。
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
#include <string>
#include <vector>
int main()
{
while(1)
{
// 每行輸入兩個數字, 然後回車
int m, n;
cin>>m>>n;
// 讀取換行符
char c = cin.get();
// 檢測下一個是不是回車
char c2 = cin.get();
// 是則結束
if (c2 == '\n')
{
break;
}
else
{
// 如果不是回車, 那麼還是會兩個數字
char b[255];
// 得到剩餘的輸入
cin.getline(b, 255);
// 整行輸入
// 注意, 這時候回車也被讀取了
// 但回車不存在於b中……
for (int i = strlen(b)+1; i> 0; i--)
{
b[i] = b[i-1];
}
b[0] = c2;
}
}
system("pause");
return 0;
}
over。