はてなキーワード: charとは
ちなみにintっていうのは 内耳的に char short longなどのなかから 速度などをかんがみて 最適なながさにせよ
たすけてね☆ このままだと ころされちゃう あいてにそんなつもりがなくても
あいてがやることは はなしかけるだけ ただし 不用意なタイミングで 何年も
それだけで 殺せるかの 実験でも しているんだろう
そんなものをうけたつもりはないし 顔合わせもしていない
また、そういう事故とまちがえられないよう 最近はAKBのイベントなども すべて自粛しているこ
困りぬいた人に
こっちが 入院になった
そういうことしかない
国に助けてもらいたい だれもいないから 天涯孤独 それもだめなら どこがいいか?
周囲の人からは理由は特にないけど なぜか いじめられることはおおい
っておもしろい
いままで、誰かの準備を食ってきたからかんたんだったんじゃない?
よく食われるからそうおもう
くうこと(きがつかずにもらっちゃう)もあるけどね
わからない
いまのたんとうが過去の中ではけっこういい
はなしかけられる ということがどれだけ苦痛を伴うかは だいぶまえから知ってる
がいきちの話を聞くのは苦痛だろう
それがわかるから、なるべくしないようにしている
でも限界なんだ
ここにひたすらかいていると すこしだけおちつく。
基本書き込んでいる間はプログラムを組んでいることが大多数
またさぎょう。
ずっといえだから、気がつくと寝ている。
あさおきると作業再開
ひたすら作業
みーんななくなっちゃうね
あそぶまえに とられて おわる まぁ コロナはしょうがないけど
としくったなぁとおもった
*調子に乗るな!って
ヒット作もない
簡単にクビになる
いらねー人材
そんなもん、じぶんが、いちばんよくしってる
いっしょけんめいがんばって
ねたみ そねみ 誹謗中傷はやまもど
ちょうしになどのれない
いじめられこそすれ いいことなどないのは自分が一番良く知っている。
くつなめましょうか?
血反吐は吐いてないけど
苦労して、苦労して つくってる
そうだろうなとおもう
あいての言い分を聞いて それこそ おれが 死んでりゃよかったんだろうなと思った
せめても がんばったから
がんばったといっただけだけど
ちょうしにのるな というのなら のらないし 乗る理由など無い
イラッとしたからAKBのCDでも買って送りつけてやりたい もちろん持ってるやつを
あとでいく
#include <iostream> #include <stdio.h> int main(int argc,char *argv[]){ for(int i=0;i<3;++i){ int j = i; printf("Hello world%d92;r92;n",j); } for(int i=0;i<0;++i){ printf("Hello again92;r92;n"); } return 0; };
それで十分だった
がんばったんだ。貯金500万
あっというまに、なくなっちゃった。
もう戻らない僕の幸せ
呪われていて
親が転校してくれたけど
だめだった ばかだったんだ
がんばっても だめなら
それはそれでいい
こりゃあたちの悪い書き方を知らんからカプセル化のありがたみがわかんないんだよなきっと
環境がC#とかで、人物一人分の情報にクラスを作る気があって、Personには体重とか身長とかがあって、みたいなわりときちんとした理屈があればああそれはね、それぞれプロパティにしとけば大丈夫、なんてので大丈夫。
地獄はこうだ。
char Person[200]; /* 0から19までを名字に使います */ /* 20から38までを名前に使います */ /* 39は年号コードです 0: 明治、 */ /* 40は生年です */ /* ... */
そしてソースコードの中にいきなり現れる
Person[70] = 35;
なにやってんだこれー!わかんねえぞこれー!
こういうことがないように、カプセル化するんだ。
#include "stdafx.h" #include <string.h> int main() { char buffer[47]; strcpy(buffer, "%0sHelloWorld\n"); for (int i = 0; true; i++) { int c = i % 16 ; if (c % 8 == c) { buffer[1] = '0' + c; } else { buffer[1] = '0' + 8 - (c-8); } printf(buffer," "); } return 0; }
https://qiita.com/yumetodo/items/54e1a8230dbf513ea85b]
https://b.hatena.ne.jp/entry/s/qiita.com/yumetodo/items/54e1a8230dbf513ea85b]
https://togetter.com/li/1301253]
https://naruse.hateblo.jp/entry/2018/12/24/013446]
文字コードを多少かじった人間としては、また人類が文字コードで混乱している。と思っていて議論が深まるのかなと思ったりします。
ただ、この話、見ててもやもやする所が一つありまして、UTF-8の1コードポイント=uint8_t=unsigned charでええんかいな。という点です。
文字コードを少しでも知っている人はUTF-8は1つのコードポイントを可変長のバイト列で表します。
よく言われるようにASCIIは1バイト、大体のCJKV文字は3バイト以上で表します((久々にWikipediaのUTF-8見たら、UTF-8にサロゲートペアってあるんだねー。罪深いわOrale〜))。最大6バイトで1つのコードポイントを表します。
つまりですね、char16_tとかchar32_tとかがUTF-16やUTF-32にマッピングされるのは分かるんですよ。サロゲートペアは脇に置いておいて、コードポイントを表すのにはこの型(っつーか、データ長)を使うよってのが分かるので。
サロゲートペアを考えたときのUTF16も同じ考え方になるんですけど、UTF-8みたいな可変長のバイト長を取るエンコード方式は、結局、1「文字」を表す型(データ長)が定まらないんですよ。
char8_tをunsigned charの子クラスにしたとしてもそれって、UTF-8にとっては「1文字を表す型」ではないんですよ。「1文字を表すバイト列の単位の1つ」でしかないんですよ。(サロゲートペアを考慮したときのchar16_tも同様)。
意味論で言っちゃえばUTF-32に対してchar8_tを使っても意味は同じになるんですよ。UTF-32って8ビット×4で構成されるだけなんで。
なので、UTF-8で表される1文字を型で使いたかったらuint64_tの子クラス(本当は最大6バイトなので48でいいんだけど)にしなきゃダメなんじゃねぇの?もしくは最少8ビットで48ビットを保証する型。とC++界隈ではない自分は思うわけです。
ほいよ
char format[50]; strcpy(format, "%0s%s"); for (int i = 0; i < 8; i++) { printf(format,"","Hello world\n" ); format[1]++; }
スペース増田なら こんなかんじか?
class mystring { public: char *buffer; mystring() { buffer = (char*)""; } void operator = (const char*t) { int len = strlen(t); buffer = new char[len + 47]; strcpy(buffer, t); } void operator = (const mystring&src) { int len = strlen(src.buffer); buffer = new char[len + 47]; strcpy(buffer, src.buffer); } mystring& operator + (const char*t) { int len = strlen(buffer); int len2 = strlen(t); char *buffer2 = new char[len + len2 + 47]; strcpy(buffer2, buffer); strcpy(buffer2+len, t); buffer = buffer2; return *this; } mystring& operator + (const mystring&src) { return ((*this) + src.buffer); } };
class mystringV { public: std::vector<char> buffer; mystringV() { buffer.resize(2); buffer[0] = ' '; buffer[1] = NULL; } void operator = (const char*t) { int len = strlen(t); buffer.resize(len+1); strcpy(&buffer.at(0), t); } void operator = (const mystringV&src) { buffer = src.buffer; } mystringV& operator + (const char*t) { int len = strlen(&buffer.at(0)); int len2 = strlen(t); buffer.resize(len + len2 + 47); strcpy(&buffer.at(0) + len, t); return *this; } mystringV& operator + (const mystringV&src) { return ((*this) + &src.buffer.at(0)); } };
いろんな事をプログラマにかわってライブラリがやってしまうということ
どうなんだろうね。
この辺は あまりしっかり おしえてもらえないところではある。
でも プロならみんな 知っている
class mystring { public: char *buffer; mystring() { buffer = (char*)""; } void operator = (const char*t) { int len = strlen(t); buffer = new char[len + 47]; strcpy(buffer, t); } void operator = (const mystring&src) { int len = strlen(src.buffer); buffer = new char[len + 47]; strcpy(buffer, src.buffer); } mystring& operator + (const char*t) { int len = strlen(buffer); int len2 = strlen(t); char *buffer2 = new char[len + len2 + 47]; strcpy(buffer2, buffer); strcpy(buffer2+len, t); buffer = buffer2; return *this; } mystring& operator + (const mystring&src) { return ((*this) + src.buffer); } };
mystring my_space_org; for (int i = 0; i < 8; i++) { mystring space; space = my_space_org + " "; printf("%sHello world\n", space.buffer); my_space_org = space; }
一気に並べてみる
int i; int space; for (int i = 0; i < 8; i++) { for (space = 0; space < i; space++) { printf(" "); } printf("Hello world\n"); }
すまん <は半角の<に置き換えてくれ(w)
int i; int space; char buffer[8]; char buffer2[8]; memset(buffer, 0, 8); memset(buffer2, 0, 8); for (int i = 0; i < 8; i++) { memset(buffer, 0x20, i); printf("%sHello world\n",buffer); }
int i; int space; char buffer[8]; char buffer2[8]; memset(buffer, 0, 8); memset(buffer2, 0, 8); for (int i = 0; i < 8; i++) { buffer[i] = 0x20; printf("%sHello world\n",buffer); }
この場合は特に影響はないが一般的にはmemsetを使う使わないは大きな影響になるので
std::string space; for (int i = 0; i < 8; i++) { printf("%sHello world\n", space.c_str()); space += " "; }
std::string space_org; for (int i = 0; i < 8; i++) { std::string space = space_org + " "; printf("%sHello world\n", space.c_str()); space_org = space; }
ざつにかんがえても 書き方いろいろ
つまり まぁ どれがいいというよりは
状況に応じてかき分けていく必要がある
学校の授業などだと
アルゴリズムの話で
ヒープソート マージソート クイックソートの比較みたいな話があるけど
そこまで難しい話にいかなくても
書き方がたくさんある