我有点C ++菜鸟。我正在研究这个程序,该程序需要我的程序计算一个单词中有多少个字符。我尝试使用strlen()
,但似乎无法正常工作。
我还需要将从strlen()
打印的数字转换为整数。
下面是我正在使用的代码:
char str[64];
cin >> str;
cout << "strlen: " << strlen(str) << endl;
cout << "sizeof: " << sizeof(str) << endl;
答案 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
请注意,直接读取数字比先读取字符串当然要短