【问题标题】:Count letters in String without using strlen()不使用 strlen() 计算字符串中的字母
【发布时间】:2015-07-05 05:33:19
【问题描述】:

我创建了一个用户输入字符串的程序。但我需要计算字符串中有多少个字母。问题是我不允许使用strlen()function。所以我找到了一些方法,但它们使用指针,但我还不允许使用它,因为我们还没有学会它。用简单的方法做到这一点的最佳方法是什么?我也尝试过字符,但我也没有运气。

#include <iostream>

using namespace std;

string long;
string short;


int main()
{

        cout << "Enter long string";
        cin >> long;


        cout << "Enter short string";
        cin >> short;



    return 0;
}

我需要得到long和short的长度并打印出来。

我正在尝试使用它而不像之前的一些问题中所问的那样做 strlen。

【问题讨论】:

  • cout &lt;&lt;long.size(),但你需要#include &lt;string&gt;
  • longshort 是不能(可移植地)用作变量名的关键字。
  • C++ String Length?的可能重复
  • 如果没有 strlen @FabioTurati,我不会这样做
  • @sonicboom 抱歉,我误解了你的问题,我以为你说过 strlen() 是不允许的,因为它适用于 C 风格的字符串,而你正在使用 std::string。我链接的答案说明您可以在这种情况下使用string::size()string::length()。但现在我知道你也不能使用这些功能。

标签: c++ string


【解决方案1】:

你的意思是这样的吗?

//random string given

int length = 1;
while(some_string[length - 1] != '\0')
  length++;

或者如果您不想计算\0 字符:

int length = 0;
while(some_string[length] != '\0')
  length++;

【讨论】:

  • 运行这个后,我的长度值只是 3.. 它不准确@naltipar
  • 如果我输入 2,我得到 3。
  • 我通过减去 1 来修复它
  • 阅读更新版本,我以为你想包含\0 字符。
  • 您的第二个版本访问some_string[-1]。那可不好。第一个没有得到正确的长度。所以,两者都是错误的。你很幸运能投票。
【解决方案2】:

您可以从头开始数,直到到达结尾字符\0

std::string foo = "hello";

int length = 0;
while (foo[++length] != '\0');

std::cout << length;

【讨论】:

    【解决方案3】:

    如果您使用标准 cpp 字符串对象,我认为获取字符串长度的最佳方法是使用方法:

    long.size();
    

    它为您提供字符串中的字符数,而没有结束字符串字符'\0'。要使用它,您必须包含字符串库:

    #include <string>
    

    如果你决定使用 char 表,你可以试试 cin 的方法:

    char long_[20];
    cout << "Enter long string\n";
    int l = cin.getline(long_,20).gcount(); 
    cout << l << endl;
    

    gcount()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2011-10-02
      相关资源
      最近更新 更多