从C++中的函数返回字符串
Returning a string from a function in C++
我有一段代码,要从姓氏字符串中生成引用代码。它应该取第一个char
,无论是否为元音,然后搜索数组中剩余的每个char
,丢弃仅在临时string
中存储辅音的元音,然后将临时string
返回给string refCode;
。代码是用C给我的,我将其转换为C++。编译的代码正确地分配了第一个值,但如果if
返回true
,则在尝试将第二个值分配给临时string
时将失败。代码超过5个外部.cpp
秒和4个.h
秒,所以我将从最少量开始,并根据需要发布更多。
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;
}
}
当我试图解决这个问题时,我遇到了断言、访问冲突和一个字符串错误,似乎是在说字符串不够大。如有任何帮助,我们将不胜感激。
字符串的大小不会自动增长。如果字符串的起始长度为零(如tStr
),则需要使用push_back
在字符串末尾添加字符。
tStr.push_back(lastname[0]);
和
tStr.push_back(lastname[i]);
将单个字符分配给字符串时,请确保该字符串已分配了这些字符。
以下代码错误:
string tStr;
//...
tStr[0] = lastname[0];
因为,它会为tStr
中的第一个字符指定一个值。但此时tStr
为空。
您想要附加/推回字符:
string tStr;
//...
tStr.push_back( lastname[0] );
此外,您应该确保姓氏不为空。
不能在空字符串上说tStr[0]
!当然,目标字符串必须足够大才能包含结果。说tStr.push_back(lastname[0]);
或tStr += lastname[0];
,或者初始化足够大的字符串(就像std::string tStr(lastname.size())
一样),然后在完成后截断它。
您需要添加对0长度的检查:
if (x==0) ....
您需要将命令代码tStr[j] = ...
替换为:
tStr.push_back(lastname[i]);
相关文章:
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- C 字符串返回字符串的整数/双精度/长整型值
- 如何从COM模块中的函数返回字符串数组?
- React Native (Android):无法通过 JNI 在 jobject 中返回字符串
- 我如何在函数 cpp 中返回字符串
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 格式化返回字符串C++
- 返回字符串vs通过引用传递字符串以更新值
- 如何在不使用 STL 的情况下从函数反转字符串后返回字符串C++?
- 使用 ctypes 从函数返回字符串C++会给出大的 int,而不是 char 指针
- 从 C++ 中的模板函数返回字符串和整数
- 返回字符串的散点回文计数
- C++重载字符串 [] 运算符以返回字符串和
- 返回字符串和不同向量数据类型的映射C++
- 字符串函数不返回字符串? C++
- 从函数返回字符串C++错误
- 如何在返回字符串的函数中不忽略void值
- 我想将字符串转换为 Json 格式并返回字符串向量作为答案
- C - 返回字符串时的分割故障
- 使用向量和字符串函数返回字符串