我正试图在我正在编写的Hangman程序中使用Strings,并且无法让它们工作,因此尝试在更简单的基础上与它们合作并且我仍然没有运气。
至于我在参考文献中在线阅读以及其他人所说的这段代码应该有效:
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int main (int argc, char** argv){
string word = {"Hello"};
int length = strlen(word);
}
但是我得到了这个编译错误:
'string'未在此范围内声明
因此,'word'也未在范围内声明。
谁能看到我做错了什么?我在Ubuntu上使用g ++编译器,如果这有所不同,不知道哪个版本。
答案 0 :(得分:7)
您对C和C ++感到困惑。
您只包含C库,而std::string
来自C ++标头string
。你必须写:
#include <string>
使用它。但是,您必须进行其他更改,例如不使用strlen
。
你应该学习你的C ++书籍,而不是互联网上的随机帖子( #lolirony )
#include <string.h>
int main(void)
{
const char* word = "Hello";
const size_t length = strlen(word); // `size_t` is more appropriate than `int`
return 0;
}
#include <cstring>
using namespace std;
int main()
{
const char* word = "Hello";
const size_t length = strlen(word);
}
#include <string>
int main()
{
const std::string word = "Hello";
const std::size_t length = word.size();
}
答案 1 :(得分:4)
'string'未在此范围内声明
您需要添加标题<string>
并将其称为std::string
。此外,strlen
无法理解std::string
或任何用户定义的类型,但您可以使用size()
方法:
#include <string>
int main()
{
std::string word = "Hello";
size_t length = word.size();
}
答案 2 :(得分:1)
答案 3 :(得分:1)
您尚未在项目中包含C ++字符串标题。
#include <string>
您包含的库都是普通C标头。
此外,strlen()
不适用于c ++字符串;你应该使用word.size()
代替。
答案 4 :(得分:0)
string
是标准类std::basic_string
的特化。它在标题<string>
因此,如果你想“使用标准类std :: string:”,你需要包含指令
#include <string>
标题<cstring>
与标题<string>
不同,并且包含标准C函数的声明,例如strlen
。
然而,将函数strlen
应用于std::string
类型的对象没有任何意义。在这种情况下,编译器将发出错误。
我建议您使用以下代码来查看差异
#include <iostream>
#include <string>
#include <cstring>
int main (int argc, char** argv)
{
std::string word = "Hello";
std::string::size_type length = word.length();
std::cout << "Object word of type std::string has value "
<< word << " with length of " << length
<< std::endl;
std::cout << "The size of the object itself is " << sizeof( word ) << std::endl;
char another_word[] = "Hello";
size_t another_length = std::strlen( another_word );
std::cout << "Object another_word of type char [6] has value "
<< another_word << " with length of " << another_length
<< std::endl;
std::cout << "The size of the object itself is " << sizeof( another_word ) << std::endl;
}