【发布时间】:2021-04-14 05:12:48
【问题描述】:
如果有意义的话,我正在尝试使用 C++ 语法而不是 C 语法将我的基本 C 代码转换为 C++。但是,我有一个问题。我不知道如何在 C++ 中使用strlen()。在预处理中,我有#include <iostream>#include <string> 和using namespace std;。当我尝试编译时,它给出了以下错误消息:
error: use of undeclared identifier 'strlen'
int n = strlen(MessagetEnc);
和
error: use of undeclared identifier 'strlen'
for (int i = 0; i < strlen(MessagetEnc); i++)
另外,使用#include <cstring> 似乎无法解决问题。
这是代码:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
int EncCode;
std::cout << "Encryption code: " << std::endl;
std::cin >> EncCode;
string MessagetEnc;
std::cout << "Message to Encrypt:";
std::cin >> MessagetEnc;
std::cout << "Output: " << endl;
int n = strlen(MessagetEnc);
for (int i = 0; i < strlen(MessagetEnc); i++)
{
std::cout <<"Encrypted message" << MessagetEnc[i];
}
}
我知道 C++ 对初学者不友好,我只是想在阅读几篇文章后尝试一下,因为我打算在我离开“初学者阶段”后充分学习它。
编辑:std:: 存在是因为我尝试摆脱 using namespace std; 作为调试方式。
【问题讨论】:
-
C++ 字符串不同于 C 字符串
-
MessagetEnc.size()是std::string的长度。您不能为此使用strlen。您应该避免使用using namespace std;,并学习在标准类型前面加上std::或添加更窄的 using 语句。 -
你使用
std::string来存储字符串,那么你不需要使用strlen()来找出它的长度。只需将MessagetEnc.size()用于相同目的。