使用incrimenter计算空格

时间:2016-10-25 08:09:43

标签: c++

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string> using namespace std;

using namespace std;

int main()
{
int spaces = 0;
string input;
cin >> input;

for (int x = 0; x < input.length(); x++) {
    if (input.substr(0, x) == " ") {
        spaces++;
    }
}
cout << spaces << endl;
system("pause");
return 0;   
}

我正在尝试制作一个简单的程序,通过添加到增量器来计算空格数。

由于某种原因它总是返回0。

1 个答案:

答案 0 :(得分:5)

你有两个问题:

  1. cin >> input;应为std::getline(std::cin, input);,因为std::cin将停留在第一个空格而不存储其余字符串。
  2. if (input.substr(0, x) == " ")我无法理解你对这个表达的意思。但是,您想要的是if (input[x] == ' ')
  3. 完整代码:(稍加更改)

    #include <iostream>
    #include <iomanip>
    #include <string>     
    int main(){
        unsigned int spaces = 0;
        std::string input;
        std::getline(std::cin, input);
        for (std::size_t x = 0; x < input.length(); x++) {
            if (input[x] == ' ') {
                spaces++;
            }
        }
        std::cout << spaces << std::endl;
        system("pause");
        return 0;   
    }
    

    Online Demo

    正如@BobTFish所做的那样,在实际代码中执行此操作的正确方法是:

    #include <iostream>
    #include <string>   
    #include <algorithm>
    int main(){
        std::string input;
        std::getline(std::cin, input);
        const auto spaces = std::count(input.cbegin(),input.cend(),' ');
        std::cout << spaces << std::endl;
        system("pause");
        return 0;   
    }
    

    Online Demo