Я новичок в C++ и испытываю определенные трудности в понимании его поведения, поскольку он сильно отличается от других изученных мной языков.
Может ли кто-нибудь указать мне в правильном направлении исправить этот код и объяснить журналы ошибок?
Я использую http://www.compileonline.com/compile_cpp_online.php для компиляции и запуска этого кода.
Массивная (векторная) переменная объявляется размером 5, а затем цикл for внутри цикла while заполняет его и меняет значения. В первом цикле while цикл for заполняет его, если первое введенное значение -1, цикл while должен останавливаться. В противном случае разрешите пользователю изменять значения.
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> items(5);
do
{
cout << "Type customer details: " << endl;
for(int i = 0; i < 5; i++)
{
cout << "info " << 0 << ": ";
items[i] >> cin;
}
int newBalance = items[1] + items[2] - items[3];
if(newBalance > items[4])
{
cout << items[0] << " - " << items[4] << " - " << newBalance << " - Credit limit exceeded." << endl;
}
}while(items[0] != -1);
}
Журнал ошибок:
Compiling the source code....
$g++ main.cpp -o demo -lm -pthread -lgmpxx -lgmp -lreadline 2>&1
main.cpp: In function 'int main()':
main.cpp:18:13: error: no match for 'operator>>' (operand types are 'int' and 'std::istream {aka std::basic_istream<char>}')
items[i] >> cin;
^
main.cpp:18:13: note: candidates are:
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/string:53:0,
from /usr/local/gcc-4.8.1/include/c++/4.8.1/bits/locale_classes.h:40,
from /usr/local/gcc-4.8.1/include/c++/4.8.1/bits/ios_base.h:41,
from /usr/local/gcc-4.8.1/include/c++/4.8.1/ios:42,
from /usr/local/gcc-4.8.1/include/c++/4.8.1/ostream:38,
from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:39,
from main.cpp:1:
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/basic_string.tcc:996:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&)
operator>>(basic_istream<_CharT, _Traits>& __in,
^
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/basic_string.tcc:996:5: note: template argument deduction/substitution failed:
main.cpp:18:16: note: mismatched types 'std::basic_istream<_CharT, _Traits>' and 'int'
items[i] >> cin;
^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/istream:879:0,
from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40,
from main.cpp:1:
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/istream.tcc:955:5: note: template<class _CharT2, class _Traits2> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*)
operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
^
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/istream.tcc:955:5: note: template argument deduction/substitution failed:
main.cpp:18:16: note: mismatched types 'std::basic_istream<_CharT, _Traits>' and 'int'
items[i] >> cin;
^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/istream:879:0,
from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40,
from main.cpp:1:
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/istream.tcc:923:5: note: template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)
operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
^
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/istream.tcc:923:5: note: template argument deduction/substitution failed:
main.cpp:18:16: note: mismatched types 'std::basic_istream<_CharT, _Traits>' and 'int'
items[i] >> cin;
^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0,
from main.cpp:1:
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:727:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)
operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:727:5: note: template argument deduction/substitution failed:
main.cpp:18:16: note: mismatched types 'std::basic_istream<char, _Traits>' and 'int'
items[i] >> cin;
^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0,
from main.cpp:1:
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:732:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)
operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:732:5: note: template argument deduction/substitution failed:
main.cpp:18:16: note: mismatched types 'std::basic_istream<char, _Traits>' and 'int'
items[i] >> cin;
^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0,
from main.cpp:1:
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:774:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)
operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:774:5: note: template argument deduction/substitution failed:
main.cpp:18:16: note: mismatched types 'std::basic_istream<char, _Traits>' and 'int'
items[i] >> cin;
^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0,
from main.cpp:1:
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:779:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*)
operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:779:5: note: template argument deduction/substitution failed:
main.cpp:18:16: note: mismatched types 'std::basic_istream<char, _Traits>' and 'int'
items[i] >> cin;
^
Тебе нужно
#include <vector>
см. векторную онлайн-страницу
items[i] >> cin; // this line is not valid
должно быть
std::cin >> item[i];
Или вы вызываете std::getline
с консоли, конвертируете в int, а затем присваиваете значение элементу в векторе.
замещать
items[i] >> cin;
с
cin >> items[i];