错误c++ | ISO c++禁止数组赋值
Error C++ | ISO C++ forbids assignment of arrays
我有一个解决不了的问题。如果此查询的回答为"yes",则应该anrede = female。
Dev++给了我这个错误:ISO c++禁止赋值数组
char anrede[10];
printf("Anrede: female?? Yes/No");
scanf("%s", &anrede);
if(anrede == "Yes"){
anrede = "female";
} else{
anrede = "male";
}
有人能帮帮我吗?
你的代码是C代码,C对初学者来说很难。c++更简单:
#include <iostream>
#include <string>
std::string anrede;
cout << "Anrede: female?? Yes/No";
std::getline(cin, anrede);
if(anrede == "Yes"){
anrede = "female";
} else{
anrede = "male";
}
考虑到您的示例实际上是C语言,trojanfoe的优秀答案可能不太适合您,在这种情况下,您需要的是strcpy()和strcmp():
char anrede[7]; // increase to 7 to leave room for "female" plus the null byte
printf("Anrede: female?? Yes/No");
scanf("%6s", &anrede); // restrict read length to 6 chars + the null bute
if (strcmp(anrede, "Yes") == 0){
strcpy(anrede, "female");
} else {
strcpy(anrede, "male");
}
但是如果你可以避免的话,你真的不想这样做。Strcpy()不知道缓冲区的大小,所以它会很高兴地在目标数组的末尾运行,要么破坏程序的数据,要么立即崩溃。Strncpy()是一个带最大长度参数的不错选择,但它并不总是可用。
我会使用trojanfoe发布的标准c++解决方案,除非您确实需要用C编写(在这种情况下,问题被错误标记)。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '