Wydaje się, że sposób, w jaki większość ludzi ma rozmiar string
, polega na użyciu tylko my_string.size()
i działa dobrze. Cóż, ostatnio zrobił zadanie dla klasy, w których zrobiłem ...Czy C++ ma darmową funkcję "size (object)"?
if (size(my_string) < 5)
store[counter].setWeight(stoi(my_string));
Zamiast ....
if (my_string.size() < 5)
store[counter].setWeight(stoi(my_string));
Ale ku mojemu zdziwieniu mój instruktor, który moim zdaniem jest uruchomiony starszy kompilator , nie był w stanie uruchomić tego wiersza kodu. Na moim kompilatorze działa on w obie strony i nie jestem do końca pewien dlaczego.
kompletny program (wyprowadza 4 dla obu):
#include <string>
#include <iostream>
using namespace std;
int main()
{
string myvar = "1000";
cout << "Using size(myvar) = " << size(myvar) << endl;
cout << "Using myvar.size() = " << myvar.size() << endl;
}
Jeśli ktoś może rzucić nieco światła na to, dlaczego moje rozwiązanie problemu pracował na moim komputerze, ale nie moi profesorowie? Ponadto używam VS2015.
Jaki jest typ 'temp'? Do czego służy funkcja 'sizeof'? –
Wymienne wielkości (x) i x.size() są proponowane dla C++ 17 –
Temp jest typu string i temp.size() i size (temp) są zaprojektowane tak, aby uzyskać ile znaków jest w temp; ku mojemu zdziwieniu obaj zwrócą tę samą wartość, a rozmiar nie jest zdefiniowany nigdzie indziej w moim programie, ponieważ myślałem o tym również. – Feek