计算字符串中的字符数并将其转换为int

时间:2019-02-23 18:04:23

标签: c++

我有点C ++菜鸟。我正在研究这个程序,该程序需要我的程序计算一个单词中有多少个字符。我尝试使用strlen(),但似乎无法正常工作。

我还需要将从strlen()打印的数字转换为整数。

下面是我正在使用的代码:

char str[64];
cin >> str;
cout << "strlen: " << strlen(str) << endl;
cout << "sizeof: " << sizeof(str) << endl;

1 个答案:

答案 0 :(得分:1)

     cout << "strlen: " << strlen(str) << endl;
     cout << "sizeof: " << sizeof(str) << endl;

strlen 返回最后一个空字符之前的字符数,因此结果取决于 str 的内容,如果str[0] == 0 < / p>

sizeof 返回大小,此处为64,与内容无关。 sizeof 的单位为 char ,根据定义, sizeof(char)为1

这在C ++和C中是相同的


  

需要将从strlen打印的数字转换为整数。

代码示例:

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


int main()
{
  char str[64];

  if (cin>>str) {
    cout << "strlen: " << strlen(str) << endl;
    cout << "sizeof: " << sizeof(str) << endl;

    errno = 0;

    char * endptr;
    long int v = strtol(str, &endptr, 10);

    if ((endptr != str) && (errno == 0))
      cout << "value :" << v << endl;
  }
}

编译和执行:

pi@raspberrypi:/tmp/d $ g++ -pedantic -Wextra s.c
pi@raspberrypi:/tmp/d $ ./a.out
123
strlen: 3
sizeof: 64
value :123

但是,除了使用C数组外,还可以使用 std :: string 作为注释,例如:

#include <string>
#include <iostream>
#include <sstream>
using namespace std;

int main()
{
  string str;

  if (cin>>str) {
    cout << "len: " << str.length() << endl;

    istringstream is(str);
    long v;

    if (is >> v)
      cout << "value :" << v << endl;
  }
}

编译和执行:

pi@raspberrypi:/tmp/d $ g++ -pedantic -Wextra s.c
pi@raspberrypi:/tmp/d $ ./a.out
123
len: 3
value :123

请注意,直接读取数字比先读取字符串当然要短