如何替换字符串中特定索引处的一个字符
How to replace one character at a specific index in a string
我有一个程序,它将字符串作为命令行参数。然后我想进入这个字符串,在特定的索引中用另一个字符替换一个字符。因此,举一个更具体的例子,这就是我所拥有的,也是我想做的:
string input(argv[2]); //lets say I run with ./Prog x bbbbbbb
//I want to do this
input.at(2) = "a"; //obviously this doesn't work
当我尝试input.insert(2,a);
和cout << input
时,我会得到bb$bbbbb
,然后在下一行出现seg故障消息。我最初认为我可以在2处插入,在3处擦除,用a代替第三个b,但seg错误对我来说破坏了这一点。那么,有没有其他方法可以做到这一点,或者帮助我理解为什么我会出现seg错误?
edit:seg错误是另一回事,但当我试图输入时,仍然会得到$
"因此,对于一个更具体的例子,这就是我所拥有的和我想做的:…
。。。那么,有没有其他方法可以做到这一点,或者帮助我理解为什么我会出现seg错误?"
//I want to do this input.at(2) = "a"; //obviously this doesn't work
它不起作用,因为"a"
实际上提供了一个const char*
指针,而不是std::string::at()
所要求的char
使用简单的字符文字,而不是c样式的字符串文字:
input.at(2) = 'a';
// ^^^
"当我尝试
input.insert(2,a);
和cout << input
时,我会得到bb$bbbbb
,然后在下一行显示seg故障消息。"
此外,std::string::insert()
在给定位置不提供字符的替换,但在那里插入一个或多个字符,您可能在此处传递了未初始化的char* a
,从而导致segfault。但要最终回答这一部分,您应该指定变量a
在本文中的实际含义。
相关文章:
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何检查一个c++字符串中有多少相同的字符/数字
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 关于字符数组,我正在尝试将数组中的每个字符分配给另一个值
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 使用动态分配将 char* 复制到另一个字符**
- 将字符向量复制到另一个向量
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 计算在同一位置至少包含一个常用字符的不同字符串对
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 如何检查一个字符是否与字符数组中的另一个字符匹配?
- C++:使用另一个字符将一个字符大写
- 我可以得到一个字符 * 到一个 std::sregex_iterator 匹配 str() 吗?
- C ++读取用户输入的字符一个一个符号
- 遍历数组或从打开的文件中获取字符 - 一个比另一个有什么优势
- 将文本文件的内容一个字符一个字符地读入矢量,不跳过空白或新行
- 这是更快和更有效的,处理一个字符一个字符作为字符或流