gpt4 book ai didi

c++ - 如何使用 C++ 剪切或删除字符串中的某些字符

转载 作者:行者123 更新时间:2023-11-30 04:22:20 27 4
gpt4 key购买 nike

我有以下代码:

#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;
}
}

经过测试,似乎有效,here .

关于c++ - 如何使用 C++ 剪切或删除字符串中的某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13876921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com