C++逐个字符读取字符串

3
我有一个限制,需要逐个字符读取输入字符串。因此,在每个字符串后面检查\n。但程序没有终止。
以下是我在一段非常简短的代码中遇到的问题:
#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将一个接一个地得到其余的字符。
输入样例:
banananobano
abcdefhgijk
Radaradarada

为什么你在使用两个 while 循环?内部循环不会终止,因为你没有在其中更改 x - PcAF
默认情况下,cin >> c(其中 c 是一个 char)将跳过所有空格(包括换行符)。 - Jerry Coffin
那么我能以某种方式读取空格或/n,或者使用其他输入格式吗? - Shashank
如果您想检查空格,则直接检查“c”即可。 - PcAF
2个回答

7

我有一个限制,需要逐个字符读取输入的字符串。

逐个字符读取的一种方式是使用 std::basic_istream::get 方法。

如果你定义了

char c;

那么

std::cin.get(c);

将会读取下一个字符到变量c中。

在循环中,您可以这样使用它:

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

6

cin是以空格作为分隔符的,因此任何空格(包括\n)都将被丢弃。所以x永远不会出现。

使用getline从输入流中读取行,然后使用istringstream从该行中获取格式化输入。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接