leetcode 17の質問とお互いにchar *文字列を解析
char *(またはchar)トランスフェクションした文字列のコンストラクタは、文字列を見ることができます
デフォルト(1)文字列(); コピー(2)文字列(のconst文字&STR); ストリング(3)文字列(CONST文字列&STR、size_tのPOS、size_tのLEN = NPOなど); C-列(4)文字列(CONSTのchar *秒)から バッファから(5)の文字列(CONSTのchar * sで、size_tのN); (size_tのN、チャーC)(6)文字列を埋める; レンジ(7)テンプレート<クラスInputIterator> //ベクトル<ストリング> V; //str(v.begin()、v.end()); 文字列(InputIteratorまず、InputIterator最後); 初期化子リスト(8)文字列(initializer_list <CHAR>イリノイ州) ; 移動(9)の文字列(文字列&& STR)noexcept。
1. CHAR * - >文字列文字列s(アドレス、N)または文字列s(アドレス)。
2.チャー - >文字列文字列s(N个チャー、チャー)
3.文字列 - > CHAR * strcpyの(アドレス、str.c_strを())を使用しました。
ストリング転送のchar *は、文字列によって提供c_str()またはデータ()関数を使用することができます。
c_str()関数は、文字の配列、およびデータ(の「\ 0」末端)に戻り、ここで、「0 \」末端の文字を含まない、唯一の文字列の内容を返します。
c_str()は、一時的なポインタを操作することはできませんを返します。そして、これはそのポインタ値を変更し、元のデータ列を指す、文字列が変更されます。
書式#include <iostreamの> の#include <ベクトル> の#include < 文字列 > 使用して名前空間 はstdを、クラス解決{ パブリック: ベクトル < ストリング > letterCombinations(文字列の数字){ ベクトル <ベクトル< チャー >>電話{{ ' A '、' B '、' C ' }、{ ' D '、' E '、' F ' G ' ' H ' ' I ' }、{ ' J ' ' K ' ' L ' }、{ ' M ' ' N ' ' O ' }、{ ' P ' ' Q ' ' R ' ' S ' }、{ ' T ' '中「」V ' }、{ ' W ' ' X ' ' Y ' ' Z ' }}。 もし(digits.empty()) 戻りベクトル< ストリング > {}; ベクター < ストリング > resNext = letterCombinations(digits.substr(1 ))。 INT curNum =桁[ 0 ] - ' 0 ' - 2 。 ベクター < CHAR > VC(電話[curNum])。 ベクター< 文字列 > resCur。 用(オート&{:VC毎) ベクトル < ストリング > TEMP(resNext)。 // 这一行不能丢、一時为空的时候char->の文字列 であれば(temp.empty()){ ストリング S(&それぞれ、1); resCur.push_back(S)引き続き;} ための(自動&STR:TEMP){ STR =それぞれ+ STR。 } resCur.insert(resCur.end()、temp.begin()、temp.end())。 } 戻りresCur。 } }。 int型メイン(){ 解sol。 文字列の数字= " 23 " ; ベクター < ストリング >のRES =のsol.letterCombinations(桁)。 以下のために(int型私= 0 ; iが(res.sizeを<); ++ I){ COUT << RES [I] << ENDL。 } }