string size length 違い

投稿者: | 2015/10/26 月曜日

違いはない。ただしstrlenとは違う。

#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()は自分で管理しているサイズを返す。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です