- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 C++ 编写一个程序,它通过一个 char 数组,随着它的进行用 ch2 替换 ch1,我遇到的问题是让它改变输入的实际字符串而不是返回一个新的字符串。在 C# 中,您会使用“ref”,但我很困惑如何在 C++ 中执行此操作,您需要 * 还是 &?
下面的代码有很多错误:
(7): error C2664: 'strlen' : 无法将参数 1 从 'char' 转换为 'const char *' 从整数类型到指针类型的转换需要 reinterpret_cast、C 风格转换或函数风格转换
(7): error C2440: 'initializing' : cannot convert from 'char *' to 'char []' 尽管存在对数组的引用或指针的转换,但没有对数组类型的转换
(11): error C2100: 非法间接寻址
(17): error C2100: 非法间接寻址
(24): error C2440: '=' : 无法从 'char []' 转换为 'char' 没有可以进行此转换的上下文
(36): error C2664: 'replace' : 无法将参数 1 从 'char [17]' 转换为 'char &'
#include<iostream>
#include<cstring>
using namespace std;
int replace(char & str, char ch1, char ch2)
{
char newStr[]= new char[strlen(str)+1];
int i=0;
while(str!='\0')
{
if(*str==ch1)
{
newStr[i]=ch2;
}
else
{
newStr[i]=*str;
}
str++;
i++;
}
newStr[i]='\0';
str = newStr;
return 0;
}
int main()
{
char str[]="My name is Craig";
char takeOut='C';
char changeTo='a';
cout << "Before: " << str <<endl;
int changes=replace(str, takeOut, changeTo);
cout << "After: " << str << endl;
cin.get();
cin.get();
return 0;
}
最佳答案
在 C++ 中你会使用 std::string
和 std::replace
:
std::string s = "My name is Craig";
std::replace(s.begin(), s.end(), 'C', 'a');
如果出于某种原因你想实现你自己的版本,使用一个指向空终止字符串的指针,要点是你不需要创建一个新的字符串:
void replace(char* str, char ch1, char ch2)
{
while (*str != '\0')
{
if (*str == ch1) *str = ch2;
++str;
}
}
关于c++ - 指针和引用 - 简单的 CharArray 操作程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29147901/
我正在阅读 an article about whole program optimization .链接时代码生成部分的最后一段说,将分配在堆栈上的数组归零可能不会产生相同的效果,具体取决于它的归零
我有 char c1 = 'S'; // S as a character char c2 = '\u0068'; // h in Unicode char c3 = 0
这个问题在这里已经有了答案: How do I determine the size of my array in C? (24 个答案) 关闭 6 年前。 在我已经有几年 Python、C# 和
这里是 Enter Your Name :xyzEnter Your Age :abc I want this preformatted text to be converted into ch
我有一个接受 16 位十六进制值作为输入的程序。我想做的就是让它提取这些值。例如,如果我输入: 0xFFFF 0x0000 0x1234 我希望程序迭代此输入字符串,并一次提取每个十六进制值。另外,如
#Input: chararr = np.chararray((3, 5)) chararr[:] = 'a' chararr #Output: chararray([[b'a', b'a', b'a
我正在尝试将我的字符数组 grid1 传递给名为 status 的方法。我收到错误 char 无法转换为 char[][]。我如何传递 grid1 以便它可以在 for 循环中工作? for
出于某种原因,我很难用空格初始化 numpy.chararray。 这有效: char_array1 = np.chararray((3, 3)) char_array1[:] = 'a' char_
我有以下代码 private static int getYear(char[] charArray) { return (int)charArray[0] * 1000 + (int)ch
以下代码应该将电话号码字符转换为实际的电话号码整数。例如,800-NEXT-DAY = 800-639-8329。但无论我在 result.substring 索引中输入什么,我都会得到字符串索引超出
我目前正在努力通过 UDP 发送一些值。 主要问题是我有很多值(value)观。如果我单独发送每个值,它就可以正常工作。 char imu_x[16]; char imu_y[16]; char im
我有这个 CharArray: char[] letters = "qwertyuiopasdfghjklzxcvbnm123456789".ToCharArray(); 我想知道如何从这个数组中获取
我有这个代码 var str : CharArray var t =0 for (k in i..i+3) { str[t++] = array[k][j] 它说str必须初始化,我不知道如
我的问题是我得到一个 String 并且我需要检查从末尾开始的第 4 个位置是否有空格。如果在这个位置没有空格,我应该插入它。 例如:我得到这个字符串:TW12EF,需要这样得到它:TW1 2EF 首
我正在尝试用 C++ 编写一个程序,它通过一个 char 数组,随着它的进行用 ch2 替换 ch1,我遇到的问题是让它改变输入的实际字符串而不是返回一个新的字符串。在 C# 中,您会使用“ref”,
我有一个严重而恼人的问题,请帮忙 mdContext->digest[i] 是一个具有十六进制值的无符号字符数组,所以 for (i = 0; i digest[i]); 打印 900150983cd
我有一个在任何情况下都满足 ([a-zA-Z0-9])* 的字符串,我想让它通过 sha1 运行。 那么如何将字符串(或使用 ToCharArray() 获得的字符数组)转换为字节数组呢? 到目前为止
如果我在字符串上使用 Split() 函数,将各种拆分字符作为 char[] 参数传递,并假定匹配的拆分字符已被删除从字符串中,我如何识别它匹配和拆分的字符? string inputString =
提前致谢。我们都知道为什么在Java中对于密码等敏感数据应该使用char[]而不是String。我只是想知道 Kotlin 中是否存在同样的情况。 document说“当针对 JVM 时,此类的实例(
我有一些大小的 char[] originalCharArray。 我想创建一个新的 char[] returnCharArray,这样每次 char ' 出现在原始 char[] 中时,都会添加另一
我是一名优秀的程序员,十分优秀!