u16Stringをchar化する際、関数によって初期化していたのですが
初期化全文の前のfor文(中身は実行なし)の有無に依ってcoutの表示が変化してしまいます。
for文が存在する場合、期待した表示になります。(path//to//the//moon)が表示される。
空のfor文によって動作が変わる理由がよく分からず、困っています。
理由をご教授いただけると幸いです。
c++
1/* 2u16Stringをcharへ変換する関数 3*/ 4char* convertU16StrToChar(std::u16string& str) { 5 6 7 size_t strSize = str.length(); 8 mbstate_t state; 9 mbsinit(&state); 10 char buf[5]; 11 char out[32]; 12 size_t byteNum; 13 size_t outIndex = 0; 14 for (int i = 0; i < strSize; ++i) { 15 byteNum = c16rtomb(buf, str[i], &state); 16 for (size_t i = 0; i < byteNum; i++) 17 { 18 out[outIndex] = buf[i]; 19 outIndex++; 20 } 21 } 22 23 return out; 24} 25 26int main(){ 27std::u16string path = u"path//to//the//moon"; 28 29/*for (size_t i = 0; i < 1; i++) { 30 }ここをコメントアウトすると、☆部分でcharの中身が表示できる*/ 31 32 char* pathChar 33 = convertU16StrToChar(path); 34 35 for (size_t i = 0; i < 15; i++) { 36//☆ 37 cout << pathChar[i]; 38 39 } 40} 41 42コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。