2012-03-18 94 views
1

注:這是C++,但用C風格的字符串

你好SO,越來越控制檯輸入Cstrings

我工作的一個任務,我需要從控制檯獲取輸入並保存到一個cstring。一切都編譯好,但程序運行時,它只是跳過從用戶輸入。所以它會輸出:「輸入要插入的字符串:」然後跳過cin.getline函數,然後執行下一個命令。

這是我的頭文件,cstring的聲明和我遇到的代碼行。

#include "stdafx.h" 
#include <iostream> 
#include <cstring> 

using namespace std; 

int main() 
{ 
    char tempCString[500] = {}; 

//...code snipit... 

    cout << "Enter string to be inserted: " << endl; 
    cin.getline(tempCString, 500, '\n'); //I've also tried cin.getline(tempCString, 500); 

//...end code snipit... 

    return 0; 
} 

注:我不能用「CIN >> tempCString」 becaues只會獲得輸入到第一個空間,我需要從一切的控制檯輸入到新行。

謝謝

+0

如果它變得略過,有機會,你有一個新的行留在從以前的一些讀取輸入緩衝區。 – 2012-03-18 00:53:53

+0

我將如何去清除緩衝區? – 2012-03-18 00:56:17

回答

2

嘗試獲得新的輸入之前清理cin的緩衝區:

#include <limits> 

cin.clear(); 
cin.ignore(std::numeric_limits<std::streamsize>::max()); 
cout << "Enter string to be inserted: " << endl; 
cin.getline(tempCString, sizeof(tempCString), '\n'); 

How do I flush the cin buffer?

+0

謝謝你提醒我,我已經忘記了這一點。 – 2012-03-18 01:07:38

+0

我聽說cin和cin.getline()在一起玩的不好。現在我知道他們爲什麼說哈哈。只需在每個cin之後放置cin.ignore(1000,10)>> – 2012-03-18 01:13:08