다음은 오류와 함께 실패합니다 prog.cpp:5:13: error: invalid conversion from ‘char’ to ‘const char*’
int main()
{
char d = 'd';
std::string y("Hello worl");
y.append(d); // Line 5 - this fails
std::cout << y;
return 0;
}
또한 컴파일했지만 런타임에 임의로 동작하는 다음을 시도했습니다.
int main()
{
char d[1] = { 'd' };
std::string y("Hello worl");
y.append(d);
std::cout << y;
return 0;
}
이 바보 같은 질문에 대해 죄송하지만 Google에서 검색 한 결과 “char array to char ptr”, “char ptr to char array”등이 있습니다.
답변
y += d;
+=
명명 된 함수 대신 연산자를 사용 합니다.
답변
사용 push_back()
:
std::string y("Hello worl");
y.push_back('d')
std::cout << y;
답변
append 메소드를 사용하여 std :: string var에 char를 추가하려면이 오버로드를 사용해야합니다.
std::string::append(size_type _Count, char _Ch)
편집 : 맞습니다. 컨텍스트 도움말에 표시된 size_type 매개 변수를 잘못 이해했습니다. 추가 할 문자 수입니다. 올바른 전화는
s.append(1, d);
아니
s.append(sizeof(char), d);
또는 가장 간단한 방법 :
s += d;
답변
언급 된 다른 것 외에도 문자열 생성자 중 하나는 char과 해당 char에 대한 반복 횟수를 취합니다. 이를 사용하여 단일 문자를 추가 할 수 있습니다.
std::string s = "hell";
s += std::string(1, 'o');
답변
여러 제안을 큰 고리로 실행하여 테스트합니다. Microsoft Visual Studio 2015를 컴파일러로 사용했으며 프로세서는 i7, 8Hz, 2GHz입니다.
long start = clock();
int a = 0;
//100000000
std::string ret;
for (int i = 0; i < 60000000; i++)
{
ret.append(1, ' ');
//ret += ' ';
//ret.push_back(' ');
//ret.insert(ret.end(), 1, ' ');
//ret.resize(ret.size() + 1, ' ');
}
long stop = clock();
long test = stop - start;
return 0;
이 테스트에 따르면 결과는 다음과 같습니다.
operation time(ms) note
------------------------------------------------------------------------
append 66015
+= 67328 1.02 time slower than 'append'
resize 83867 1.27 time slower than 'append'
push_back & insert 90000 more than 1.36 time slower than 'append'
결론
+=
더 이해하기 쉬운 것처럼 보이지만 속도에 관심이 있다면 추가를 사용하십시오.
답변
+ = 연산자 링크 텍스트 , append () 메소드 링크 텍스트 또는 push_back () 메소드 링크 텍스트를 사용해보십시오
이 게시물의 링크에는 해당 API를 사용하는 방법에 대한 예제도 포함되어 있습니다.
답변
문제 :
std::string y("Hello worl");
y.push_back('d')
std::cout << y;
char d = ‘d’와 같이 char 이름을 사용하는 것과는 반대로 ‘d’를 가져야한다는 것입니다. 아니면 내가 틀렸어?