6
#include<iostream>
#include<string>
using std::string;
using std::cout;
using std::endl;
int main()
{
string s;
cout << s.size() << endl;
cout << s[0] << endl; //output empty line
return 0;
}
Jak s jest pusty ciąg znaków, dlaczego to ma element s [0]? Moim zdaniem, powinien otrzymać błąd czasu wykonywania. Czy to konwencja czy cokolwiek innego?dlaczego pusty łańcuch może wyjście indeksu 0 elementem w C++
Czy to uzasadnienie sprawia, że 's [n]' dla łańcucha działa podobnie do łańcucha w stylu C zaimplementowanego jako 'char [n + 1]'? – Barmar
@Barmar Wyobrażam sobie, że to coś takiego. Szczegółowe uzasadnienie może być gdzieś znalezione, ale jestem zbyt leniwy, aby go szukać. – Brian
@Deduplicator, tak, to §21.4.5 [string.access] – quantdev