違いはない。ただしstrlenとは違う。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include <string> #include <iostream> #include <string.h> using namespace std; int main() { string s="aaa"; cout << s.size() << endl; // 3 cout << s.length() << endl; // 3 cout << strlen(s.c_str()) << endl; // 3 cout << endl; s += ""; cout << s.size() << endl; // 3 cout << s.length() << endl; // 3 cout << strlen(s.c_str()) << endl; // 3 cout << endl; s.push_back('\0'); cout << s.size() << endl; // 4 cout << s.length() << endl; // 4 cout << strlen(s.c_str()) << endl; // 3 cout << endl; s.push_back('\0'); cout << s.size() << endl; //5 cout << s.length() << endl; //5 cout << strlen(s.c_str()) << endl; // 3 cout << endl; } |
stringは自分でサイズを持っているのでNUL文字を含むことができる。strlenなどの関数はNULまでを数えて返すが、size()やlength()は自分で管理しているサイズを返す。