2.12.5. æåå#
2.12.5.1. char å#
C/C++ č¨čĒã§ã¯ã1 æåãæąããããĢ char åãäŊŋį¨ããžããchar åãŽãĩã¤ãē㯠1 ãã¤ãã¨æąēããããĻããã1 ã¤ãŽå¤æ°ãĢ㯠1 æåããæ ŧį´ã§ããžãããæŦĄãŽäžã§ã¯ã3 ã¤ãŽ char 夿°ãĢããããæåãäģŖå
Ĩãããžã¨ããĻåēåããĻããžãã
#include <stdio.h>
int main(void) {
char a = 'D';
char b = 'N';
char c = 'A';
printf("%c%c%c\n", a, b, c); // DNA
return 0;
}
褿°ãŽæåãããĒãæååãæąãå ´åã¯ãchar åãŽé
åãåŠį¨ããžããããŽã¨ããæååãŽæåžãĢã¯åŋ
ãããĢæå \0 ãįŊŽãåŋ
čĻããããžãããããĢã¯ãŠãŧããŧãˇã§ãŗã§æååãæåŽããå ´åã¯ãããĢæåãčĒåįãĢčŋŊå ãããžãã
#include <stdio.h>
int main(void) {
char str1[] = {'R', 'N', 'A', '\0'};
printf("%s (%lu)\n", str1, sizeof(str1)); // RNA (4)
char str2[] = "DNA";
printf("%s (%lu)\n", str2, sizeof(str2)); // DNA (4)
return 0;
}
2.12.5.2. char åãã¤ãŗãŋãŧ#
æååã¯ãchar åãŽé
åã ãã§ãĒããchar åãã¤ãŗãŋãŧã§ãæąããã¨ãã§ããžããæååãĒããŠãĢãæããã¤ãŗãŋãŧãäŊŋãå ´åãå
åŽšãæ¸ãæããĒããã const char* ã¨ãããŽãä¸čŦįã§ãã
#include <stdio.h>
int main(void) {
const char* str = "DNA";
printf("%s\n", str); // DNA
return 0;
}
2.12.5.3. string å#
C++ ã§ã¯ std::string åãäŊŋããã¨ã§ãæååãããåŽå
¨ãã¤į°ĄåãĢæąããžããæååãŽįĩåãéˇããŽååžãĒãŠãį´æįãĢčĄããįšãįšåž´ã§ãã
#include <iostream>
#include <string>
int main() {
std::string str1 = "DNA";
std::string str2 = "RNA";
std::cout << str1 + str2 << std::endl; // DNARNA
return 0;
}
char åé
åã¯ãããŽãžãž std::string ãĢæ¸Ąããã¨ã§å¤æã§ããžããé
åãŽå ´åã¯ããĢæåãžã§ãčĒåįãĢæååã¨ããĻæąãããžãã
#include <iostream>
#include <string>
int main() {
char arr[] = "CGTCAAACGG";
std::string dna_seq(arr);
std::cout << dna_seq << std::endl; // CGTCAAACGG
return 0;
}
char åãã¤ãŗãŋãŧãã夿ããå ´åãåæ§ãĢ夿ã§ããžãã
#include <iostream>
#include <string>
int main() {
const char* ptr = "CGTCAAACGG";
std::string dna_seq(ptr);
std::cout << dna_seq << std::endl;
return 0;
}
std::string ã§ã¯ãæååãé
åã¨åããããĢæąããã¨ãã§ããžããäžãã°ãã¤ãŗããã¯ãšãæåŽããĻįšåŽãŽæåãĢãĸã¯ãģãšã§ããžãã
#include <iostream>
#include <string>
int main() {
std::string seq = "CGTCAAACGG";
std::cout << seq[0] << " " << seq[1] << std::endl; // C G
return 0;
}
æååãŽéˇã㯠size() ã§ååžã§ããžãã
#include <iostream>
#include <string>
int main() {
std::string seq = "CGTCAAACGG";
std::cout << seq.size() << std::endl; // 10
return 0;
}
褿°ãŽæååãéŖįĩããå ´åã¯ã+ æŧįŽåãäŊŋããžãã
#include <iostream>
#include <string>
int main() {
std::string mRNA = "CGTCAAACGC" + std::string("CGCCCGATAG") + "AACCAATTGT";
std::cout << mRNA << std::endl;
return 0;
}
æååä¸ããįšåŽãŽé¨åæååãæĸããĢã¯ãfind ãžã㯠rfind ãäŊŋį¨ããžããfind ã¯åãããrfind ã¯åžãããæ¤į´ĸããžããčĻã¤ãããĒãå ´å㯠std::string::npos ãčŋãããžãã
#include <iostream>
#include <string>
int main() {
std::string seq = "CGTATACAAACCGGAGCGAAAAC";
auto pos1 = seq.find("AAA");
auto pos2 = seq.rfind("AAA");
std::cout << pos1 << std::endl; // 7
std::cout << pos2 << std::endl; // 19
return 0;
}
replace ãäŊŋãã¨ãæåŽããäŊįŊŽã¨éˇããŽæååãåĨãŽæååãĢįŊŽãæããããžãã
#include <iostream>
#include <string>
int main() {
std::string seq = "CGTCAACGTAACCTGC";
seq.replace(0, 3, "AAAAAAAAAA");
std::cout << seq << std::endl;
return 0;
}
įšåŽãŽæåãããšãĻåĨãŽæåãĢįŊŽãæãããå ´åã¯ãfind 㨠replace ãįĩãŋåãããĻåĻįããžããæŦĄãŽäžã§ã¯ãããšãĻ㎠T ã U ãĢįŊŽãæããĻããžãã
#include <iostream>
#include <string>
int main() {
std::string seq = "CGTCAACGTAACCTGC";
for (auto pos = seq.find('T'); pos != std::string::npos; pos = seq.find('T', pos + 1)) {
seq.replace(pos, 1, "U");
}
std::cout << seq << std::endl; // CGUCAACGUAACCUGC
return 0;
}