编程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...
任何帮助将不胜感激!
答案 0 :(得分:6)
// 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
/*...*/
}
答案 1 :(得分:1)
将其分解成碎片。
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";
答案 2 :(得分:0)
由于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";