C++ 确定cin中给出了多少个字符?

C++ 确定cin中给出了多少个字符?,c++,input,cin,C++,Input,Cin,假设我写过: ... char c; while(condition){ cin>>c; //do stuff ... } ... 如果cin中给出了2个字符,则下一个cin将采用第二个字符,而我不给出任何字符。所以,我试过这个: ... char c; while(condition){ cin<<c //do stuff ... cin.ignore("999 \n")

假设我写过:

    ...
    char c;
    while(condition){
       cin>>c;
       //do stuff
       ...
    }
...
如果cin中给出了
2个
字符,则下一个cin将采用第二个字符,而我不给出任何字符。所以,我试过这个:

...
char c;
while(condition){
   cin<<c
   //do stuff
   ...
   cin.ignore("999 \n");
}
...
。。。
字符c;
while(条件){

cin读取
std::string
并验证:

 while(condition){
     std::string s;
     std::cin >> s;
     if (s.length() != 1){
         // oops - make sure s[0] is not taken
     }
     c = s[0];

     // do stuff         
  }

读取
std::string
并验证:

 while(condition){
     std::string s;
     std::cin >> s;
     if (s.length() != 1){
         // oops - make sure s[0] is not taken
     }
     c = s[0];

     // do stuff         
  }

我想你想要的是
std::cin.rdbuf()->in_avail()
,它会告诉你有多少个字符仍然在
std::cin
缓冲区中。如果你只读取1个字符,然后输入1个字符,结果将是1,因为未读
\n
。所以在计算时请记住这一点

#include <iostream> 

int main()
{
    char c;
    std::cin >> c;
    std::cout << "cin still contains " << std::cin.rdbuf()->in_avail() << " chars" << std::endl;
}
#包括
int main()
{
字符c;
标准:cin>>c;

std::cout我想你想要的是
std::cin.rdbuf()->in_avail()
,它会告诉你还有多少个字符在
std::cin
缓冲区中。如果你只读取1个字符,然后输入1个字符,结果将是1,因为未读
\n
。所以在计算时请记住这一点

#include <iostream> 

int main()
{
    char c;
    std::cin >> c;
    std::cout << "cin still contains " << std::cin.rdbuf()->in_avail() << " chars" << std::endl;
}
#包括
int main()
{
字符c;
标准:cin>>c;

std::cout有什么问题?一个cin只需要一个字符输入。如果您想输入多个字符,请将其作为字符数组或尝试循环。
cin可能重复的问题是什么?一个cin只需要一个字符输入。如果您想输入多个字符,请将其作为字符数组或尝试循环。
cin可能重复的
std::string::empty
而不是比较ispreferable@Sugar:除非要检查字符串是否为非零的特定长度;-)
std::string::empty
而不是比较preferable@Sugar:除非要检查字符串是否为非零的特定长度;-)