#include <iostream>
#include <fstream>
#include <string>
using namespace std;
main()
{
bool string1[20];
cout << "Enter string: ";
cin >> string1;
int counter = 0;
int length;
length = strlen(string1);
这是不完整的代码,但我的问题是为什么在使用cin
时出现编译错误?它说:
错误:'operator&gt;&gt;'不匹配(操作数类型为'std :: istream {aka std :: basic_istream&lt; char&gt;}'和'bool [20]')
在这一行:
cin >> string1;
我不确定如何解决这个问题。
答案 0 :(得分:1)
bool string1[20];
对于用户输入作为字符串是错误的选择,它所做的就是创建一个20
布尔数组,true
或false
这不是什么你想要的。
你所追求的是你所包含的#include <string>
string string1;
cout << "Enter string: ";
cin >> string1;
使用strlen
length
方法取代std::string
,而不是auto length = string1.length()
{{1}}
答案 1 :(得分:0)
没有operator>>
来读取bool
值数组。您需要的是一系列char
值:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main() {
char string1[20];
cout << "Enter string: ";
cin >> setw(20) >> string1;
int length = strlen(string1);
或者更好,一个std::string
:
#include <iostream>
#include <string>
using namespace std;
int main() {
string string1;
cout << "Enter string: ";
cin >> string1;
int length = string1.length();
答案 2 :(得分:-1)
我认为你把字符串与数组混淆了。代码中的string1不是一个字符串,而是一个数组。因此,您无法在不提供正确索引编号的情况下将数据放入其中。还记得它的bool类型,所以你只能输入0/1 / true / false值。
同样,您在代码中使用了strlen()函数,该函数用于确定字符串的长度,但您的数组是一个数组。你没有问过这个问题但是当我在IDE中运行代码时出错了。
这是一种方法:
main()
{
bool string1[20];
cout << "Enter string: ";
for(int i=0;i<20;i++)//iterating through the boolian array
{
cin >> string1[i];
}
int counter = 0;
int length;
length = sizeof(string1)/sizeof(string1[0]);
cout<<length;//printing the size of the array
}