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

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

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

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

Q&A

解決済

2回答

3733閲覧

C++ insert関数に配列を使う

tofu_fine

総合スコア9

C++

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

0グッド

0クリップ

投稿2020/03/24 10:39

前提・実現したいこと

文字列にinsert関数を使って文字を足したいです。
文字はvector配列に格納されています。
実現できない場合は理由を知りたいです。

発生している問題・エラーメッセージ

長文のエラーコードが発生しているので一部を抜粋します。

hello2.cpp:10:29: error: no matching function for call to 'std::__cxx11::basic_string<char>::insert(int, __gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type&)'
10 | s.insert(0,vec.at(n));

1534 | insert(const_iterator __p, size_type __n, _CharT __c)

1578 | insert(const_iterator __p, _InputIterator __beg, _InputIterator __end)

該当のソースコード

#C++

include <bits/stdc++.h>
using namespace std;

int main(){
int n;
string s;
cin>>n>>s;
vector<char> vec(n);
for(int i=0; i<n; i++) cin>>vec.at(i);
for(int i=0; i<n; i++){
s.insert(0,vec.at(n));
}
cout<<s<<endl;

}

試したこと

太字にした部分を
s=vec.at(i)+s;
に変えると私が求めたい結果を得られます。
s.insert(0,vec.at(i))
はinsertの中のc.at(i)が文字として読み取られないのでしょうか。

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

Visual Studio Codeで実行しました。
プログラミングの学習を始めたばかりです。
わかりやすく説明していただけると嬉しいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

no matching function for call to 'std::cxx11::

との事なので、関数の引数が違うという事のようです。

s.insert(0,vec.at(n));

vec.at(n)は、charになりますが、insert()には、char を引数に取るものはないのでしょう。std::basic_string::insert

なお、 vec.at(n)ですが、 nvecのサイズなので、こちらも(少なくとも実行時に)エラーとなると思われます。 (at() の引数は、最大 (n-1)まで)
と、言うより、at(i) の間違い?

投稿2020/03/24 12:06

pepperleaf

総合スコア6385

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

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

0

https://cpprefjp.github.io/reference/string/basic_string/insert.html

(5)にもあるように、 s.insert(0,1,vec.at(i)); が正しいです。

投稿2020/03/24 11:57

majiponi

総合スコア1722

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問