我正在尝试计算用户提供的字符串中的字符数。我知道我可以使用string::length()
和string::size()
但是当遇到空格时,计数会停止。例如,假设用户输入“Bob Builder”,计数应为10,但我的代码显示的是3.我也试图在不使用字符数组的情况下执行此操作。有什么建议?解释也会有很大帮助。
int main()
{
string Name;
cin>>Name;
cout << name(Name);
return 0;
}
int name(string a)
{
int numChar;
/*for (int i=0; a[i] != '\0';i++)
{
if (!isspace(a[i]))
numChar++;
}*/
numChar=a.length();
return numChar;
}
答案 0 :(得分:3)
如何知道输入何时结束? 如果你想读到行尾,那么这是一个可能的解决方案:
std::string line ;
std::cin.getline(line) ;
line.length() ;
答案 1 :(得分:2)
您必须使用getline()
代替cin
才能将所有行添加到换行符。 cin
将输入读取到空格。
std::getline (std::cin,Name);
如果您使用using namespace std;
getline (cin,Name);
如果您想计算不包含空格的输入字符串,代码段可以帮助您。
#include <algorithm>
#include <string>
int main()
{
std::string s = "Hello there, world!";
std::cout << std::count( s.begin(), s.end(), ' ' ) << std::endl;
}