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 <