そこで、20,000 行の Names.txt というテキスト ファイルを用意しました。ラインの例は次のようになります
"niineve","1 Mo.","VT","1 Mo. 10:12"
"nimrod","1 Mo.","VT","1 Mo. 10:8"
"nimrod","1 Mo.","VT","1 Mo. 10:9"
"noa","1 Mo.","VT","1 Mo. 5:29"
参考までに、現時点では、名前を入力してファイルに何回表示されるかを確認できるコードがあります。
ここで、どうにかして Mo の部分を出力する必要があります。ファイルには、「Ilm.」、「Mo.」、「Sj.」、「Sk.」などの大量の音節があります。出力に必要なものを取得する必要がありますが、現時点ではあまり具体的に説明しません。
私の質問: 最初の大文字 (含まれる) から始まり、最初のピリオド (除外される) で終わる行から文字を取得する方法はありますか?
したがって、テキストファイルの私の行が
"hiskija","2 Ku.","VT","2 Ku. 20:8"
K は最初の大文字で、Ku の後にピリオドが続くため、出力は Ku になります。その場所から音節(2〜3文字)を取得する別の方法を提案できない場合は、記号「、」と..の間から取得できると思いました。したがって、行が
"niineve","1 Mo.","VT","1 Mo. 10:12"
1 Mo の出力が得られますが、それを実行できるコマンドの経験がありません。
編集:これは私が現時点で持っているものです
ifstream file ("Names.txt");
int i;
for (i = 0; i < book.length(); ++i) {
if ('A' <= book[i] && book[i] <= 'Z') break;
}
string start = book.substr(i);
getline(file, start, '.');
cout << start;
これで、行頭から最初のピリオド「。」まで正常に読み取ります。しかし、開始点を最初の大文字にすることができませんでした。i と string の開始を正しく宣言していないと思います。