質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

2121閲覧

C++、文字列からアルファベットで指定した文字までを使用するようにするにはどうすればいいですか?

miwat

総合スコア1

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/07/07 04:53

前提・実現したいこと

C++で,入力した文字列からアルファベットで指定した文字までを使用し,それ以降の文字をスキップするにはどのようにすればいいですか?
入力例: hello , 9
hello からアルファベットの9番目の文字まで(abcdefghi)を使用し, heを出力する.

該当のソースコードでは,文字列の先頭からxx文字までに限定するように変更しています.

該当のソースコード

C++

1class STLmake { 2 private: 3 std::string S; 4 5 public: 6 STLmake(int maxelements, int maxval){}; 7 int size() { return S.size(); }; 8 void insert(char c) { S.push_back(c); }; 9 void report(std::string &str) { str = S; }; 10}; 11 12void sets(int xx, int maxval) { 13 std::string target = "hello"; 14 std::string str; 15 STLmake S(xx, maxval); 16 17##ここ## 18 19} 20 21int main(int argc, char const *argv[]) { 22## sets(5, 9)で文字列の先頭から5文字目まで,アルファベットの先頭から9個目までを使用) 23 sets(5, 9); 24 25 return 0; 26} 27 28期待する出力:'he'

試したこと

アルファベット順をうまくプログラム内に組み込めず,外側の実装で止まっています.
アドバイス宜しくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

とりあえず、'a'+数値、で、数値番目のアルファベット文字が得られますんで、そこからコードを書いていけばどうでしょう

投稿2021/07/07 04:58

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miwat

2021/07/07 05:19

ありがとうございます. 入力文字列を一文字ずつ切り出していき,切り出した文字の番号と入力したアルファベットの番号を比較するコードを考えましたが,strからは数値番目のアルファベット文字を得ることができず困っています. 'a'+0 ~ 26を順番に比較することで実装できるかもしれませんが,もう少しスマートに書きたいです.わがままで申し訳ないです. std::string sword; int snum; int n = 0; for(n=0;n<m;n++){ sword = S.substr(n,n+1); snum = sqord + 0 if(snum <= maxval){ str::string str = str + sword; } }
dodox86

2021/07/07 06:15

いただいた回答で納得したのであれば、スマートでなくてもいいから回答をもとにまずは自力で書いて終わらせるべきではないのでしょうか。
guest

0

ベストアンサー

入力した文字列からアルファベットで指定した文字までを使用し,それ以降の文字をスキップ

「入力した文字列から "abcde..."(n文字) に含まれない文字を消去する」でいいですか?

C++

1#include <iostream> 2#include <string> 3#include <algorithm> 4#include <numeric> 5 6int main() { 7 std::string target = "hello"; 8 9 int n = 9; 10 std::string pattern(n,' '); 11 std::iota(pattern.begin(), pattern.end(), 'a'); // pattern = "abc..."(n文字) 12 13 // patternに含まれない文字をtargetから取り除く 14 target.erase(std::remove_if(target.begin(), target.end(), 15 [&pattern](char ch) { return pattern.find(ch) == std::string::npos;}), 16 target.end()); 17 // できたかな? 18 std::cout << "[" << target << "]\n"; 19}

投稿2021/07/07 05:19

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miwat

2021/07/07 06:55

ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問