我正在使用此资源http://www.learncpp.com/cpp-tutorial/58-break-and-continue/
学习C ++我希望这个程序在输入命中空格后结束并打印空格类型的数量。相反,您可以根据需要输入任意数量的空格。当您按Enter键时,如果空格数超过5,程序将打印1,2,3,4或5。
#include "stdafx.h"
#include <iostream>
int main()
{
//count how many spaces the user has entered
int nSpaceCount = 0;
// loop 5 times
for (int nCount=0; nCount <5; nCount++)
{
char chChar = getchar(); // read a char from user
// exit loop is user hits enter
if (chChar == '\n')
break;
// increment count if user entered a space
if (chChar == ' ')
nSpaceCount++;
}
std::cout << "You typed " << nSpaceCount << " spaces" << std::endl;
std::cin.clear();
std::cin.ignore(255, '/n');
std::cin.get();
return 0;
}
答案 0 :(得分:5)
控制台输入是行缓冲的。在给出Enter之前,库不会将任何输入返回给程序。如果你确实需要逐字符输入,你可能会发现绕过这个的操作系统调用,但如果你这样做,你会跳过有用的东西,比如退格处理。
答案 1 :(得分:2)
你为什么这么做?
// loop 80 times
for (int nCount=0; nCount <5; nCount++)
{
}
如果你只循环5次,那么你就不能添加超过5个空格。也许你的意思是
// loop 80 times
for (int nCount=0; nCount <80; nCount++)
{
}
或只是
while(true)
{
}
答案 2 :(得分:1)
std::cin.clear();
std::cin.ignore(255, '/n');
std::cin.get();
这三行不允许您退出代码,直到cin停止忽略输入。你有&#39; / n&#39;逆转,应该是&#39; \ n&#39;
答案 3 :(得分:1)
我是为你写的:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int intSpaceCounter = 0;
string strLine;
getline(cin,strLine);
for (int i = 0; i <= strLine.length(); ++i)
{
if (strLine[i] == ' ')
{
++intSpaceCounter;
}
}
cout << "You typed " << intSpaceCounter << " spaces.";
return 0;
}