2016-09-23 51 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; 
    }