반응형
개요
string 할당하다가 생긴 오류
no viable conversion from 'value_type' (aka 'char') to 'string' (aka 'basic_string<char, char_traits<char>, allocator<char> >')
"char"에서 "std::basic_string<char, std::char_traits<char>, std::allocator<char>>"(으)로 변환하기 위한 적절한 생성자가 없습니다.
설명
1
2
3
4
5
6
7
8
9
10
11
12
|
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s = "Hello, World";
string myStr = s[0];
return 0;
}
|
cs |
mystr에 H가 들어가야 할 거 같지만
string 클래스에 myStr = s[0]과 같은 생성자가 없기에
위와 같은 에러가 발생한다.
따라서 다음과 같이 생성자를 사용하거나 (basic_string(size_type n, charT c, const Allocator& a = Allocator()); 생성자가 있다.)
string mystr(1, s[0]);
std::string에 basic_string& operator=(charT c);와 같은 할당자가 있기 때문에
선언을 먼저 한 뒤, 할당하는 방식으로 사용해야 한다.
string myStr = "";
myStr = s[0];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s = "Hello, World";
string mystr(1, s[0]);
string mystr2 = "";
mystr2 = s[0];
cout << mystr << ' ' << mystr2;
return 0;
}
|
cs |
잘 출력이 되는 모습
반응형
'언어 > C++' 카테고리의 다른 글
[C++] 미정의 동작 (0) | 2023.03.21 |
---|---|
[C++] iterator로 set, vector 원소 삭제하기 (cannot increment value-intialized map/set) (0) | 2022.11.19 |
[C++] string 덧셈 (0) | 2022.09.17 |
[C++] 상수 및 비상수 멤버 함수에서 코드 중복 현상 피하기 (0) | 2022.07.22 |
[C++] Inline 함수 (0) | 2022.07.19 |