cin 回車結束輸入

一般來說, 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。

發佈了55 篇原創文章 · 獲贊 8 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章