gpt4 book ai didi

c++ - 如何在C++中找到字符串中子字符串的位置?

转载 作者:行者123 更新时间:2023-11-28 02:52:37 26 4
gpt4 key购买 nike

我有一个来自命令行的字符串:

–m –d Tue –t 4 20 –u userid

我通过这个将它保存到一个字符串中:

string command;
for(int i=1; i<argc;i++){
string tmp = argv[i];
command += " "+ tmp + " ";
}

现在我想操作这个字符串来查找是否有 -u 如果有 -u 我想看看下一个值是否以 - 开头或者是一个名称。 (只能是-u或-u和用户名,本例中有用户名)

if(command.find("-u",0)){  
std::size_t found = command.find_first_of("-u");
cout<<found<<endl;
}

输出是 14,这是不正确的地方。我的工作是查找是否有 -u 以及在 -u 之后是否是用户名或什么都不是,或者是另一个以 - 开头的命令。我很欣赏任何想法或有效的代码。

编辑:我必须在另一台服务器上运行这段代码,我不能使用任何库来代替内置的 g++ 库。

最佳答案

虽然肯定有许多库可以完成您想要实现的事情(请参阅问题下的评论),但如果您想坚持使用您的代码,则必须使用 string.find而不是 string.find_first_of

find_first_of 从第一个参数中搜索第一次出现的 any 字符(所以 "-u")。当它找到它时,它会返回位置,因此在提供的示例中,它将返回“0”(因为 –m –d Tue –t 4 20 –u userid- 开头)。

如果你想从给定的位置开始搜索字符串,你可以给find一个描述它应该从哪里开始的位置的参数:

size_t find (const string& str, size_t pos = 0) const;

所以,如果你想找到“-u”之后的第一个“-”,你会这样做:

// Check if the first thing after "-u" starts with "-":
if(command.find("-u")!=string::npos // if there's an "-u" in the command,
&& (command.find("-",command.find("-u")) // and there's a "-" with a position
< command.find_first_of("abcdefghijklmnoqprstuwvxys",command.find("-u"))) // less than the position of the first letter after "-u", then:
cout << "it's a different command";

关于c++ - 如何在C++中找到字符串中子字符串的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22695862/

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