2016-09-23 108 views
1

我有一個約束來逐字符讀取輸入字符串。所以我在每個字符串之後檢查\ n。但該計劃沒有終止。我只是把我面臨的問題放在一個很短的代碼中。C++按字符讀取字符串字符

#include <iostream> 
    using namespace std; 

    int main(){ 
     char c; 
     while(cin>>c){ 

        char x; 
         cin>>x; 
         while(x!='\n'){ 

          print the characters; 
           cin>>x; 
          } 

    } return 0;} 

在上面的代碼,c將有字符串的第一個字符而x將通過一個具有一個字符的其餘部分。

Input Case- 
banananobano 
abcdefhgijk 
Radaradarada 
+0

?內循環不會終止,因爲你不改變'x' – PcAF

+0

默認情況下,'cin >> c'(其中'c'是一個'char')會跳過所有的空格(包括換行符)。 –

+0

所以我可以用某種方式讀取空格或/ n或使用其他輸入格式? – RAHUL

回答

2

我有一個約束的字符來讀取輸入的字符串的字符的字符通過讀取字符

的方法之一,是通過std::basic_istream::get

如果定義

char c; 

然後

std::cin.get(c); 

將讀取下一個字符爲c

在一個循環中,你可以你爲什麼要使用兩個`while`循環使用它作爲

while(std::cin.get(c)) 
    <body> 
+0

太棒了!這正是我想要的。謝謝:D – RAHUL

+0

@RAHUL不客氣。祝一切順利。 –

2

cin是空格分隔的,所以任何空格(包括\ n)都將被丟棄。因此,x將永遠不會

使用getline從輸入流中讀取行,然後使用istringstream從行中獲取格式化輸入。

std::string line; 
std::getline(cin, line); 
std::istringstream iss(line); 
while (iss >> c) {  
    print the characters; 
    }