나는 성의 문자열에서 참조 코드를 만드는 코드가 약간 있습니다. 먼저 char
모음을 찾았는지 아닌지를 확인한 다음, 배열에있는 나머지 char
을 모두 검색하여 string
의 자음을 저장하는 모음을 삭제 한 다음 string
을 string refCode;
에 반환합니다.이 코드는 C에서 저에게 제공되었으며 다음으로 변환되었습니다. C++. 코드를 컴파일하면 첫 번째 값이 올바르게 할당되지만 if
이 true
을 반환하면 두 번째 값을 string
에 할당하려고 시도하면 오류가 발생합니다. 코드는 5 외부 .cpp
s와 4 .h
s 이상이므로 최소 금액부터 시작하여 필요한만큼 더 게시 할 것입니다.C++의 함수에서 문자열 반환
Protytpe :
string makeRefCode(string lastname, int cNo);
전화 :
refCode = makeRefCode(e[c].lastname, cNo); cout << refCode;//Prints nothing
기능 인증 된 정의 : 내가 어설 왔이 문제를 액세스 위반을 해결하려고했습니다으로
string makeRefCode(string lastname, int cNo)
{
string tStr;
unsigned int i, j = 1;
unsigned int x;
x = lastname.length();
tStr[0] = lastname[0];
cout << tStr[0];//Prints correct value
for (i = 1; i < x; i++)
{
if (!isVowel(toupper(lastname[i])))
{
//tStr[j] = lastname[i];//
j++;
}
}
//refCode[j] = '0'; // add string terminator
return tStr;
}
bool isVowel(char aChar)
{
switch (aChar) //<ctype>
{
case 'A':
case 'E':
case 'I':
case 'O':
case 'U': return true; break;
default: return false;
}
}
하고, 문자열이 충분히 크지 않다는 문자열 오류가 발생했습니다. 어떤 도움이라도 대단히 감사하겠습니다.
문자열에 문자를 추가하려면'push_back'를 사용합니다. 존재하지 않는 문자에 액세스하지 마십시오.또한 터미네이터를 추가하지 마십시오. 이들은 C++ 문자열이 아니라 C 스타일 문자열입니다. –
고마워, 나는 null에 그것이 처음부터 C라고 생각했다. – ChiefTwoPencils
한편, 종결자인''0 '은 평소와 다릅니다. 그러나 실제로 '\ 0'(즉, '0')을 의미한다면 David의 조언을 따르십시오. –