c++string c文字配列を回転する方法

1083 ワード

 c++ string  c        :

1.const char*string::data()は文字配列で文字列の内容を返しますが、'0'はアクティブに追加しません.
すなわちchar[string.size()]の値は未定義の動作である
2.    const char * string::c_str()は、'0'で終わる文字配列を返します.
3.    size_t string::copy(char *,size_t len,size_t pos =0)
文字列の内容(デフォルトは先頭文字位置から)をlen文字までコピーして既存の
    c_stringまたは文字配列では、注意は'0'をコピーしません.
 
まとめ:dataもcopyも末尾に'0',c_を追加しませんstrはアクティブに追加されます.
ただし、c_strはstringを指すポインタを返す.
したがってstringコンテンツが変更されると,文字配列の内容も変更され,変更しないためにはcopyしか使用できない.
 
#include 
#include 

using namespace std;

int main(int argc, char *argv[])
{
    string str = "hello world!";
    char *buff;
    const char * cstr = str.data();
    const char *cstr2 = str.c_str();
    //string::npos          ,     string     
    size_t length = str.copy(buff,string::npos,0);
    buff[length] = '\0';

    for(int i =0; str[i]!='\0'; i++)
        cout << str[i];
    cout <