#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。
答案 0 :(得分:5)
你有两个问题:
cin >> input;
应为std::getline(std::cin, input);
,因为std::cin
将停留在第一个空格而不存储其余字符串。if (input.substr(0, x) == " ")
我无法理解你对这个表达的意思。但是,您想要的是if (input[x] == ' ')
。完整代码:(稍加更改)
#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;
}
正如@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;
}