如何忽略字符数组中的某些字母和空格
How to ignore certain letters and spaces in character arrays
试图制作一个else语句,去掉所有其他字母和空格,然后去掉我想要的字母和空格。此功能用于将用户输入的字母更改为其他字母
using namespace std;
void dna_to_rna(char rna[])
{
for (int i = 0; i < 100; i++)
{
if (rna[i] == 'a' || rna[i] == 'A')
rna[i] = 'U';
else if (rna[i] == 'c' || rna[i] == 'C')
rna[i] = 'G';
else if (rna[i] == 'g' || rna[i] == 'G')
rna[i] = 'C';
else if (rna[i] == 't' || rna[i] == 'T')
rna[i] = 'A';
}
else语句应该是什么样子才能删除所有其他字符?
如果输入参数可以更改为std::string
,则可以使用以下实现之一:
void dna_to_rna(std::string& rna)
{
auto it = rna.begin();
while (it != rna.end())
{
if (*it == 'a' || *it == 'A') *it = 'U';
else if (*it == 'c' || *it == 'C') *it = 'G';
else if (*it == 'g' || *it == 'G') *it = 'C';
else if (*it == 't' || *it == 'T') *it = 'A';
else
{
it = rna.erase(it);
continue; // it already "points" to the next element
}
++it;
}
}
std::string dna_to_rna(const std::string& dna)
{
std::string rna;
for (auto c : dna)
{
if (c == 'a' || c == 'A') rna += 'U';
else if (c == 'c' || c == 'C') rna += 'G';
else if (c == 'g' || c == 'G') rna += 'C';
else if (c == 't' || c == 'T') rna += 'A';
}
return rna;
}
可能是这样的:
using namespace std;
void dna_to_rna(char rna[])
{
string s = "";
for (int i = 0; i < 100; i++)
{
if (rna[i] == 'a' || rna[i] == 'A')
s += 'U';
else if (rna[i] == 'c' || rna[i] == 'C')
s += 'G';
else if (rna[i] == 'g' || rna[i] == 'G')
s += 'C';
else if (rna[i] == 't' || rna[i] == 'T')
s += 'A';
}
strcpy(rna, s.c_str());
}
这个想法只是简单地使用std::字符串作为临时缓冲区。字符串开头为空。然后你一个接一个地添加你想要的字符。循环完成后,将std::字符串的内容复制回rna数组。
为了让代码更简单、更容易阅读:
using namespace std;
void dna_to_rna(char rna[]) {
int arrLength = sizeof(rna)/sizeof(rna[0]); // Get size of array
for (int i = 0; i < arrLength; i++){
if (toupper(rna[i]) == 'A'){
rna[i] = 'U';
}
else if (toupper(rna[i]) == 'C') {
rna[i] = 'G';
}
else if (toupper(rna[i]) == 'G'){
rna[i] = 'C';
}
else if (toupper(rna[i]) == 'T'){
rna[i] = 'A';
}
}
}
我创建了第二个数组,只要我要查找的信息符合必要的标准,我就将其放入第二个阵列,通过创建第二个变量来计算数组中的正确位置,然后只计算cout
数组
using namespace std;
void dna_to_rna(char rna[])
{
int x = 0;
char newrna[100];
for (int i = 0; i < 100; i++)
{
if (rna[i] == 'a' || rna[i] == 'A')
{
newrna[x] = 'U';
x++;
}
else if (rna[i] == 'c' || rna[i] == 'C')
{
newrna[x] = 'G';
x++;
}
else if (rna[i] == 'g' || rna[i] == 'G')
{
newrna[x] = 'C';
x++;
}
else if (rna[i] == 't' || rna[i] == 'T')
{
newrna[x] = 'A';
x++;
}
}
相关文章:
- C++完全复制要字符串的字符列表,而不会忽略多个空格
- 忽略从文件中读取前导空格
- 如何读取文件忽略第一个空格?
- 如何在 c++ 中读取输入字符串,忽略空格
- 如何用C 中的文件中忽略空格读单词
- 忽略空格 在回文作业中使用 getline C++
- 如何解析字符串并忽略空格
- 如何忽略文件底部的空格
- std::wistringstream在解析时可以忽略字符串中的空格吗
- 匹配由符号分隔的重复单词,忽略空格
- 如何忽略空格和标点符号
- C ++在比较字符串时忽略前空格,例如:"str1"比较。( " str2" ) = 真
- 如何在重载提取运算符中读取行(忽略空格字符)
- 忽略文件末尾的空格
- 如何忽略字符数组中的某些字母和空格
- 在插入SQL数据库时忽略空格而不删除字符串中的空格
- C++ 如何将字符串与忽略空格的指针进行比较
- 从字符串中读取单词C++,同时忽略空格、数字和符号
- 将空白字符替换为 %20 的字符串,忽略所有尾随空格
- 使用 fscanf() 解析忽略空格或缺失值