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

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

新規登録して質問してみよう
ただいま回答率
85.48%
STL

STL(Standard Template Library)は、ジェネティックコンテイナー、イテレーター、アルゴリズム、そして関数オブジェクトのC++ライブラリーです。

C++

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

Q&A

解決済

1回答

1785閲覧

C++で文字を置換したい

aglkjggg

総合スコア769

STL

STL(Standard Template Library)は、ジェネティックコンテイナー、イテレーター、アルゴリズム、そして関数オブジェクトのC++ライブラリーです。

C++

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

0グッド

0クリップ

投稿2017/09/27 12:07

編集2017/09/27 12:16

###前提・実現したいこと
abcという文字列があります。
'a''b'に置換してbbcに置換する事はできました。
'a'' 'に置換して bcに置換する事はできました。
'a'''に置換してbcに置換する事はできませんでした。

どのようにプログラムを書けばbcの結果を得ることが出来るのでしょうか?

また、(char)NULLとしている部分は''とするとコンパイルエラーになるからです。
C2137 空の文字定数というコンパイルエラーが発生します。

プログラム

cpp

1#include <iostream> 2#include <string> 3#include <algorithm> 4 5int main() 6{ 7 std::string str("abc"); 8 std::replace(str.begin(), str.end(), 'a', 'b'); 9 std::cout << "aをbに置換した結果: [" << str << "]" << std::endl; 10 11 std::string str2("abc"); 12 std::replace(str2.begin(), str2.end(), 'a', ' '); 13 std::cout << "aを に置換した結果: [" << str2 << "]" << std::endl; 14 15 std::string str3("abc"); 16 std::replace(str3.begin(), str3.end(), 'a', (char)NULL); 17 std::cout << "aを''に置換した結果: [" << str3 << "]" << std::endl; 18 19 std::cout << "欲しい置換結果: [" << "bc" << "]" << std::endl; 20 return 0; 21}

実行結果

txt

1aをbに置換した結果: [bbc] 2aを に置換した結果: [ bc] 3aを''に置換した結果: [ bc] 4欲しい置換結果: [bc]


###補足情報(言語/FW/ツール等のバージョンなど)

  • Windows 10 64bit 1703
  • Visual Studio 2017 (v141)

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

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

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

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

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

guest

回答1

0

ベストアンサー

置換じゃなく削除じゃねぇの?

C++

1#include <iostream> 2#include <string> 3#include <algorithm> 4 5int main() { 6 std::string str3("abcabcabc"); 7 str3.erase(std::remove(str3.begin(), str3.end(), 'a'), str3.end()); 8 std::cout << "aを''に置換した結果: [" << str3 << "]" << std::endl; 9 return 0; 10}

投稿2017/09/27 12:28

episteme

総合スコア16614

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

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

episteme

2017/09/27 12:41

replace("a", "") は文字列の置換です。文字の置換じゃありません。
aglkjggg

2017/09/27 12:43

訂正しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問