如何从输入字符串中获取字符数?

时间:2015-12-07 20:50:13

标签: c++ string

我正在尝试计算用户提供的字符串中的字符数。我知道我可以使用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;
   }

2 个答案:

答案 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;
}