如何将 *argv[] 转换为 isaplha 中的字符串
How to turn *argv[] into a string inside isaplha
编程C++新手,并且在使用isaplha进行识别并在参数为字母时显示错误消息时遇到问题。A、A1 和以字母开头的字母数字的任意组合都会显示错误,1a 将如何通过不包含字母。我的代码如下。
for(int s = 1; s< argc; s++)
{
if (isalpha(*argv[s]))
{
cout << "You have entered a letter, however letters are not valid arguments";
}
else etc... etc...
任何帮助将不胜感激!
// Store args in a vector of strings for ease of use (excluding first arg)
auto args = std::vector<std::string>{argv+1, argv+argc};
// Iterate through each argument
for(auto& arg : args)
{
// If any of the characters in arg (a string) are alpha
if(std::any_of(arg.begin(), arg.end(), std::isalpha))
/*...*/
else
/*...*/
}
将其分解为多个部分。
argv[1]
是第一个命令行参数。
(argv[2]
是第二个,依此类推...
它有一个长度,由 strlen
.
遍历该长度,检查每个字符:
int main(int argc, char* argv[])
{
char* Param1 = argv[1];
for(int s = 0; s< strlen(Param1); s++)
{
if (isalpha(Param1[s]))
{
cout << "You have entered a letter, however letters are not valid arguments";
由于 argv
是一个包含 C 字符串的数组,因此 argv[s]
是一个 C 字符串,*argv[s]
(等于 argv[s][0]
)仅访问该字符串中的第一个字符。
如果你想检查整个char数组中没有字母,你也必须遍历该数组:
for(int s = 1; s < argc; s++) // loops through the array of C-strings
{
for(int c = 0; c < strlen(argv[s]); c++) // loops through each C-string
{
if (isalpha(argv[s][c]))
{
cout << "You have entered a letter, however letters are not valid arguments";