std::string
をchar
から作成する。例えば、グラム++で、C++で単一のcharからstd :: stringを構築できないのはなぜですか?
#include <string>
int main()
{
char c = 'a';
std::string s(c);
return 0;
}
をコンパイルされません、私はこの多くのエラーを取得
foo.cpp: In function 'int main()':
foo.cpp:6:20: error: no matching function for call to 'std::__cxx11::basic_strin
g<char>::basic_string(char&)'
std::string s(c);
^
In file included from i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/in
clude/c++/string:52:0,
from foo.cpp:1:
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:535:9: note: candidate: template<class _InputIterator> std::__cxx11::bas
ic_string<_CharT, _Traits, _Alloc>::basic_string(_InputIterator, _InputIterator,
const _Alloc&)
basic_string(_InputIterator __beg, _InputIterator __end,
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:535:9: note: template argument deduction/substitution failed:
foo.cpp:6:20: note: candidate expects 3 arguments, 1 provided
std::string s(c);
^
In file included from i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/in
clude/c++/string:52:0,
from foo.cpp:1:
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:465:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _All
oc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type
, _CharT, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>;
_Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Allo
c>::size_type = unsigned int]
basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc())
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:465:7: note: candidate expects 3 arguments, 1 provided
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:455:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _All
oc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char; _Traits = s
td::char_traits<char>; _Alloc = std::allocator<char>] <near match>
basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:455:7: note: conversion of argument 1 would be ill-formed:
foo.cpp:6:20: error: invalid conversion from 'char' to 'const char*' [-fpermissi
ve]
std::string s(c);
^
In file included from i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/in
clude/c++/string:52:0,
from foo.cpp:1:
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:445:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _All
oc>::basic_string(const _CharT*, std::__cxx11::basic_string<_CharT, _Traits, _Al
loc>::size_type, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<
char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits
, _Alloc>::size_type = unsigned int]
basic_string(const _CharT* __s, size_type __n,
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:445:7: note: candidate expects 3 arguments, 1 provided
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:427:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _All
oc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, st
d::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, std::__cxx11::basi
c_string<_CharT, _Traits, _Alloc>::size_type, const _Alloc&) [with _CharT = char
; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11:
:basic_string<_CharT, _Traits, _Alloc>::size_type = unsigned int]
basic_string(const basic_string& __str, size_type __pos,
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:427:7: note: candidate expects 4 arguments, 1 provided
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:411:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _All
oc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, st
d::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, std::__cxx11::basi
c_string<_CharT, _Traits, _Alloc>::size_type) [with _CharT = char; _Traits = std
::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_
CharT, _Traits, _Alloc>::size_type = unsigned int]
basic_string(const basic_string& __str, size_type __pos,
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:411:7: note: candidate expects 3 arguments, 1 provided
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:399:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _All
oc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) [w
ith _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<cha
r>]
basic_string(const basic_string& __str)
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:399:7: note: no known conversion for argument 1 from 'char' to 'const
std::__cxx11::basic_string<char>&'
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:391:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _All
oc>::basic_string(const _Alloc&) [with _CharT = char; _Traits = std::char_traits
<char>; _Alloc = std::allocator<char>]
basic_string(const _Alloc& __a)
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:391:7: note: no known conversion for argument 1 from 'char' to 'const
std::allocator<char>&'
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:380:7: note: candidate: std::__cxx11::basic_string<_CharT, _Traits, _All
oc>::basic_string() [with _CharT = char; _Traits = std::char_traits<char>; _Allo
c = std::allocator<char>]
basic_string()
^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:380:7: note: candidate expects 0 arguments, 1 provided
が不足しているこのコンストラクタを正当化する理由があります。
これは動作しますが、間違っていると感じ、
#include <string>
int main()
{
char c = 'a';
std::string s;
s += c;
return 0;
}
何かアドバイス、ありがとう。
'std :: string s(1、 'a')'を使うことができます。 – Jarod42
アドバイスが必要ですか、コンストラクタが存在しない理由を知りたいですか? – juanchopanza
@juanchopanza同様に。私は誰かが実際の質問に答えようとしているのかどうかを知りたいのです。「このコンストラクターがないのは正当な理由があるのですか?誰かが標準委員会からの騒ぎの知識を持っていない限り、それは答えることができないかもしれません – WhozCraig