如何使用 c++ 剪切或删除字符串中的某些字符
How to cut or delete some character in a string using c++
我有以下代码:
#include <iostream>
using namespace std;
#include <string.h>
int main(){
string track2;
string Track2;
string end_character("?");
Track2={";80221000000100018A1301000000000000000?"};
track2=Track2;
cout<<"Track2={"<<Track2<<"}n";
if((track2.length()>=24 ) && (track2.find_first_not_of('0', 24) ==string::npos)){
track2.erase (track2.begin()+24, track2.end());
cout<<"nTrack2={"<<track2<<"}n";
Track2=track2 + end_character;
cout<<"nTrack2={"<<Track2<<"}n";
}
else
cout<<"Track2 has not more than 24 characters.n";
}
我想首先检查字符串 track2 的长度,如果它大于或等于 24 个字符,那么如果第 24 个字符之后的其余字符 = 0 并且最后一个字符 = ?。然后我将在第 24 个字符的开头剪切字符串 track2,直到 track2 的末尾。之后,我将在字符串 track2 的末尾插入 ? 字符并打印出来。以下是预期的输出:
Track2={;80221000000100018A1301000000000000000?}
Track2={;80221000000100018A13010}
Track2={;80221000000100018A13010?}
但是我有一个问题,当我把字符 ? 放在我的字符串中时,我无法进入我的 if 循环。我的程序直接执行 else 循环。
谁能帮我解决这个问题?谢谢
像这样的事情怎么样:
if (Track2.length() > 24)
{
auto question_mark_pos = Track2.find_first_not_of('0', 24);
// If there is a character after the zeros AND
// if that character is last AND
// if that character is a question mark
if (question_mark_pos != std::string::npos &&
question_mark_pos == Track2.length() - 1 &&
Track2[question_mark_pos] == '?')
{
// Get the first 24 characters of the string
Track2 = Track2.substr(0, 24);
// And append the special end character
Track2 += end_character;
}
}
在这里经过测试,似乎有效。
相关文章:
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 将 NULL 与 C 的字符* 字符串一起使用
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 无法将常量字符字符串传递给模板类
- 如何组合一个宽字符字符串,中间插入一些空字符
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 从给定索引返回子字符字符串的函数
- 字符 [](c 字符串)的初始化标准
- 如何将字符字符串用作数学运算符
- 将 Unicode 字符/字符串写入文件
- C++,字符* 字符串修改
- 如何有效地用不同的整数元素替换字符字符串的元素
- C++:如果我们在字符串中添加一些整数,为什么它会从开头删除该数量的字符?(字符串 + 整数)
- strcpy正在复制sth字符i字符串.如何解决此错误
- 在C++中将双精度转换为字符*/字符串
- C 中的宽字符字符串
- 如何提取C 中的字符/字符串之间的字符串
- 无法将字符/字符串转换为int
- 带有指针的反转字符字符串
- 反转字符串中的 n 个字符(字符串中没有空格),而不使用 c++ 中的内置函数