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:除非要检查字符串是否为非零的特定长度;-)