2017-10-13 186 views
-5
#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時出現編譯錯誤?它說:爲什麼cin操作未定義?

error: no match for ‘operator>>’ (operand types are ‘std::istream {aka std::basic_istream<char>}’ and ‘bool [20]’)

在此行中:

cin >> string1; 

我不知道如何解決這個問題。

+0

你到底是什麼期待有人用'布爾字符串1 [20]'進入?您是否期望您的用戶輸入類似「true」的內容,或者像「0101010101101」? – Tas

+0

我希望他們輸入一串字符或數字,如gfc098 – Joe

+0

那麼爲什麼你有一個'bool'數組?爲什麼不使用你所包含的'std :: string'? – Tas

回答

1

bool string1[20];是用戶輸入的字符串錯誤的選擇,它是所有創造的20布爾,truefalse數組這是不是你想要的。

你以後有什麼是你的包含#include <string>

string string1; 
cout << "Enter string: "; 
cin >> string1; 

而不是使用strlen你通過使用std::string

auto length = string1.length()

-1

提供的length方法我想你混淆了字符串得到的長度與陣列。你的代碼中的string1不是一個數組的字符串。所以,你不能在沒有給出正確的索引號的情況下將數據放入其中。還要記住它的布爾類型,所以你只能輸入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 
    } 
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();